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.