sql >> Base de Datos >  >> RDS >> Sqlserver

Mejoras de Service Broker en SQL Server 2016

Antes de la Cumbre PASS de esta semana, y seguramente docenas y docenas de anuncios sobre SQL Server 2016, pensé en compartir un dato de una función que ha estado oculta en los CTP desde hace algún tiempo, pero que Microsoft no ha tenido oportunidad. para publicitar:operaciones de mantenimiento adicionales disponibles para las colas de Service Broker.

Remus Rusanu (@rusanu) analizó los problemas que la fragmentación a gran volumen puede causar en las colas en esta publicación:

  • Lidiar con grandes colas

Allí, reveló que en realidad podría usar DBCC REINDEX contra la tabla interna, pero tenía que determinar el nombre de la tabla interna y conectarse a través del DAC. No es exactamente conveniente.

Ahora, casi seis años después, si cree que está experimentando problemas de fragmentación debido a una gran carga, puede forzar el índice REORGANIZE o REBUILD operaciones contra la tabla interna de la cola haciendo referencia a la cola directamente:

ALTER QUEUE dbo.myQueue REORGANIZE;
-- or
ALTER QUEUE dbo.myQueue REBUILD;

¿Cómo sabe cuánta fragmentación tiene en una cola? Bueno, las colas se han agregado como un objeto permitido para pasar a sys.dm_db_index_physical_stats , también:

SELECT * FROM sys.dm_db_index_physical_stats
  (
    DB_ID(), 
    OBJECT_ID(N'dbo.QueryNotificationErrorsQueue'), 
    -1, 0, 'SAMPLED'
  );

Y obtiene un resultado similar a la misma interrogación de una tabla normal.

Además, puede mover la cola a otro grupo de archivos; esta operación reconstruirá la tabla de cola interna y todos sus índices en el nuevo grupo de archivos:

ALTER QUEUE dbo.myQueue MOVE TO [MY_FILEGROUP];

Estas nuevas capacidades deberían permitir una mayor escalabilidad de las soluciones de Service Broker.