Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Aprimoramentos do Service Broker no SQL Server 2016


Antes do PASS Summit desta semana, e certamente dezenas e dezenas de anúncios em torno do SQL Server 2016, pensei em compartilhar um pedacinho de um recurso que está oculto nos CTPs há algum tempo, mas que a Microsoft não teve a chance para divulgar:Operações de manutenção adicionais disponíveis para filas do Service Broker.

Remus Rusanu (@rusanu) discutiu os problemas que a fragmentação em alto volume pode causar nas filas neste post:
  • Lidando com grandes filas

Lá, ele revelou que você poderia realmente usar DBCC REINDEX contra a tabela interna, mas você tinha que determinar o nome da tabela interna e conectar-se através do DAC. Não exatamente conveniente.

Agora, quase seis anos depois, se você acredita que está enfrentando problemas de fragmentação devido à alta carga, pode forçar o índice REORGANIZE ou REBUILD operações na tabela interna da fila referenciando a fila diretamente:
ALTER QUEUE dbo.myQueue REORGANIZE;
-- or
ALTER QUEUE dbo.myQueue REBUILD;

Como você sabe quanta fragmentação você tem em uma fila? Bem, as filas foram adicionadas como um objeto permitido para passar para sys.dm_db_index_physical_stats , também:
SELECT * FROM sys.dm_db_index_physical_stats
  (
    DB_ID(), 
    OBJECT_ID(N'dbo.QueryNotificationErrorsQueue'), 
    -1, 0, 'SAMPLED'
  );

E você obtém uma saída semelhante à mesma interrogação de uma tabela regular.

Além disso, você pode mover a fila para outro grupo de arquivos. esta operação reconstruirá a tabela de fila interna e todos os seus índices no novo grupo de arquivos:
ALTER QUEUE dbo.myQueue MOVE TO [MY_FILEGROUP];

Esses novos recursos devem permitir maior escalabilidade das soluções do Service Broker.