Полнотекстовый: множество FT_MASTER_MERGE ожидает в состоянии SUSPENDED после создания нескольких полнотекстовых индексов (зависание сервера)

9

Мы провели тестирование на SQL Server 2014, когда у нас было 10 баз данных, 100 различных схем в каждой базе данных, 10 небольших (~ 50 строк) таблиц в каждой схеме (всего 10K таблиц), и мы создали полнотекстовые индексы для всех этих таблицы во всех этих базах данных одновременно.

Через несколько минут мы обнаружили, что SQL Server перестал принимать любые подключения (кроме ADMIN:.подключения). Если мы перезапустим сервер, мы сможем подключиться, но через некоторое время он снова зависнет. После некоторого расследования мы обнаружили, что это вызвано потреблением всех рабочих потоков, dm_os_tasksи dm_os_waiting_tasksпоказали, что FT_MASTER_MERGEв SUSPENDEDсостоянии много ожидания . Мы погуглили «Полный текст ожидает главной операции слияния», но больше не нашли реальной информации об этом.

Мы пробовали разные конфигурации полнотекстового каталога: один каталог на БД, один каталог на схему, один каталог на индекс. В любом случае сервер зависает со всеми этими приостановленными задачами.

Какова основная причина ожидания, как это можно исправить / смягчить?

И каков рекомендуемый способ включить полнотекстовый формат для такого большого количества таблиц?

Алексей Ф
источник

Ответы:

3

Вам нужно будет разбивать операции, а не делать все сразу. Элемент Connect не говорит о принятии новых подключений. Но из-за этого ожидающие потоки не освобождаются (в вашем случае), и новые подключения не возможны.

Ref:

Это известная проблема с SQL Server. Из пункта подключения:

Это вызвано тем, что наш текущий планировщик заданий настроен, что приводит к тому, что несколько основных операций слияния ставятся в очередь, но никогда не сигнализируются. Чтобы было ясно, это происходит только тогда, когда несколько операций индексации / реорганизации вызываются одновременно - операция индексирования завершается очень хорошо, и результаты могут быть запрошены. Это только мастер слияния, который истекает и перепланирован на более поздний период времени.

Из-за сложности исправления мы решили подождать до следующего основного релиза, прежде чем приступить к его обработке. В настоящее время рекомендуется разбивать индексные популяции, чтобы не вызывать таких проблем с тайм-аутом . Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы.

SqlWorldWide
источник