Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Подобрения на брокера на услуги в SQL Server 2016

Преди срещата PASS тази седмица и със сигурност десетки и десетки съобщения около SQL Server 2016, реших да споделя малка част от функция, която е била скрита в CTP от известно време, но че Microsoft не е имала шанс за публикуване:Допълнителни операции по поддръжката са налични за опашки на Service Broker.

Ремус Русану (@rusanu) обсъди проблемите, които фрагментацията при голям обем може да причини за опашки в тази публикация:

  • Справяне с големи опашки

Там той разкри, че всъщност можете да използвате DBCC REINDEX срещу вътрешната таблица, но трябваше да определите името на вътрешната таблица и да се свържете чрез DAC. Не е точно удобно.

Сега, почти шест години по-късно, ако смятате, че изпитвате проблеми с фрагментацията поради голямо натоварване, можете да принудите индексиране REORGANIZE или REBUILD операции срещу вътрешната таблица на опашката чрез препратка към опашката директно:

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

Как да разберете колко фрагментация имате в опашката? Е, опашките са добавени като допустим обект за преминаване към sys.dm_db_index_physical_stats , също:

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

И получавате подобен изход като същия въпрос на обикновена таблица.

Освен това можете да преместите опашката в друга файлова група; тази операция ще възстанови вътрешната таблица на опашката и всички нейни индекси в новата файлова група:

ALTER QUEUE dbo.myQueue MOVE TO [MY_FILEGROUP];

Тези нови възможности трябва да позволят по-голяма мащабируемост на решенията на Service Broker.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете информация за изглед с изгледа на информационна схема VIEWS в SQL Server

  2. TAN() Примери в SQL Server

  3. ExecuteReader изисква отворена и налична връзка. Текущото състояние на връзката е Свързване

  4. Как мога да се свържа с външна база данни от sql оператор или съхранена процедура?

  5. scope_identity срещу ident_current