sql >> Databáze >  >> RDS >> Sqlserver

Vylepšení Service Broker v SQL Server 2016

Před letošním PASS Summitem a jistě desítkami a desítkami oznámení o SQL Server 2016 jsem si myslel, že se podělím o drobnost funkce, která je již nějakou dobu skryta v CTP, ale že Microsoft neměl šanci zveřejnit:Další operace údržby dostupné pro fronty Service Broker.

Remus Rusanu (@rusanu) v tomto příspěvku diskutoval o problémech, které fragmentace při vysoké hlasitosti může způsobit frontám:

  • Zacházení s velkými frontami

Tam odhalil, že můžete skutečně použít DBCC REINDEX proti interní tabulce, ale museli jste určit název interní tabulky a připojit se přes DAC. Není to zrovna pohodlné.

Nyní, téměř o šest let později, pokud se domníváte, že dochází k problémům s fragmentací kvůli vysoké zátěži, můžete vynutit index REORGANIZE nebo REBUILD operace proti interní tabulce fronty přímým odkazem na frontu:

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

Jak víte, jak velkou fragmentaci máte ve frontě? No, fronty byly přidány jako povolený objekt pro předání do sys.dm_db_index_physical_stats , také:

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

A získáte podobný výstup jako při stejném dotazování běžné tabulky.

Kromě toho můžete frontu přesunout do jiné skupiny souborů; tato operace znovu sestaví tabulku interní fronty a všechny její indexy na nové skupině souborů:

ALTER QUEUE dbo.myQueue MOVE TO [MY_FILEGROUP];

Tyto nové funkce by měly umožnit větší škálovatelnost řešení Service Broker.


  1. Jak spustit více instancí MySQL na stejném počítači

  2. Implementace automatického zálohování a obnovy databáze pomocí výchozích prostředků

  3. Jak přidám řetězec s hodnotou automatického přírůstku na SQL Server?

  4. SQL SERVER – jeden trik pro manipulaci s dynamickým SQL, abyste se vyhnuli útoku SQL Injection?