sql >> Databasteknik >  >> RDS >> Sqlserver

Service Broker-förbättringar i SQL Server 2016

Inför veckans PASS-toppmöte, och säkert dussintals och dussintals tillkännagivanden kring SQL Server 2016, tänkte jag dela med mig av en bit av en funktion som har varit gömd i CTP:erna ett tag nu, men som Microsoft inte har haft en chans att publicera:Ytterligare underhållsåtgärder tillgängliga för Service Broker-köer.

Remus Rusanu (@rusanu) diskuterade problemen som fragmentering vid hög volym kan orsaka för köer i det här inlägget:

  • Hantera stora köer

Där avslöjade han att du faktiskt kunde använda DBCC REINDEX mot den interna tabellen, men du var tvungen att bestämma det interna tabellnamnet och ansluta via DAC. Inte direkt bekvämt.

Nu, nästan sex år senare, om du tror att du upplever fragmenteringsproblem på grund av hög belastning, kan du tvinga indexet REORGANIZE eller REBUILD operationer mot köns interna tabell genom att referera till kön direkt:

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

Hur vet du hur mycket fragmentering du har i en kö? Tja, köer har lagts till som ett tillåtet objekt att skicka till sys.dm_db_index_physical_stats också:

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

Och du får liknande utdata som samma förfrågning av en vanlig tabell.

Dessutom kan du flytta kön till en annan filgrupp. denna operation kommer att bygga om den interna kötabellen och alla dess index på den nya filgruppen:

ALTER QUEUE dbo.myQueue MOVE TO [MY_FILEGROUP];

Dessa nya funktioner bör möjliggöra större skalbarhet för Service Broker-lösningar.


  1. MySQL-skärning närmar sig?

  2. Indexeras primärnyckeln automatiskt i MySQL?

  3. Amazon RDS för PostgreSQL-alternativ - ClusterControl för PostgreSQL

  4. formatera intervall med to_char