Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обновление полнотекстового индекса приводит к зависанию sql server  [new]
AlMal
Member

Откуда:
Сообщений: 44
Здравствуйте, коллеги.

У меня очень небольшая база, в ней есть табличка Elements и для нее построен полнотекстовый индекс на два поля типа varchar.
Все прекрасно работало до недавнего времени.
Индекс обновлялся по таймеру каждые 5 минут командой
ALTER FULLTEXT INDEX ON [Elements] START INCREMENTAL POPULATION
Команда отрабатывала за долю секунды.
Это не удивительно потому что в этой таблице всего 390000 записей и добавляется ежедневно по 500-600.

Внезапно сайт стал зависать - стал разбираться и быстро нашел причину.
При запуске этой команды (ALTER FULLTEXT INDEX ON [Elements] START INCREMENTAL POPULATION) она выполняется очень долго - я прождал несколько минут и абортировал.
Но это пол-беды. Беда в том, что sql server перестает отвечать на любые другие запросы, а диспетчер задач показывает 0% загрузки. Сразу после аборта выполнения процедуры - работа сайта (а значит и sql server) восстанавливается и диспетчер задач сразу показывает нормальные проценты загрузки.

Ну ладно, подумал я, с кем не бывает, давайте поделаем шаманские действия.

Перегрузка сервера - помогает на 10-20 минут - ситуация воспроизводится. После этого можно сколько угодно раз повторять запуск команды вручную - стабильно вызывает зависание.

Пересоздание каталога и индекса помогло на пол-дня.

Опять пересоздал индекс и стал делать обновление не каждые 5 минут, а два раза в день вручную. Прошло 3 дня и вот опять здравствуйте.

Скрин-шот свойств полнотекстового индекса можно посмотреть по ссылке https://yadi.sk/i/HUS8IFpRi4gA9

Версия сервера: Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Прошу сообщить какие разумные действия можно сделать в данной ситуации.
24 июл 15, 11:36    [17929127]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
AlMal
Member

Откуда:
Сообщений: 44
В довесок хотелось бы понять как корректно запретить полнотекстовое индексирование.
Выбираю таблицу в Management Studio, правая кнопка - Полнотекстовый индекс - Отключить.
Пытается выполнить и через примерно 10 секунд выдается ошибка 1222 (Time out) (см. скриншот по сслыке https://yadi.sk/i/k5H4AygYi4zaf )

Вроде бы по умолчанию таймаут установлен в бесконечность.
Пытался перед выполнением выполнить команду
set lock_timeout -1
не помогло.

До этого боролся с этим эффектом перезагрузкой сервера и выполнял запрет индексирования сразу после перезагрузки. Но каждый раз сервер перегружать не хочется.
Хочется чтобы у майкрософта работали их же стандартные меню...

Есть мысли как не перегружая сервер отключить индексирование (чтобы потом удалить и перестроить заново)?
24 июл 15, 15:29    [17930752]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
"Индекс обновлялся по таймеру каждые 5 минут командой
ALTER FULLTEXT INDEX ON [Elements] START INCREMENTAL POPULATION
Команда отрабатывала за долю секунды.
Это не удивительно потому что в этой таблице всего 390000 записей и добавляется ежедневно по 500-600."

а зачем при таком объеме такие сложности?

поставьте автоматическое обновление и забудьте о проблемах
24 июл 15, 16:14    [17931075]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
AlMal
Member

Откуда:
Сообщений: 44
Насколько я понимаю, установка автоматического обновления изменит только момент (во времени) обновления индекса.
Само же обновление будет происходить так же инкрементально.

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

Обновляя вручную, я хотя бы могу увидеть что процедура зависла и абортировать ее, избегая таким образом длительной неработоспособности сайта.

Еще раз, я обращаю внимание благородных донов на то, что вследствие весьма стандартной и легальной команды сервер переходит в явно ненормальное состояние и пребывает в оном пока не будет абортирована эта команда. Никаких прерываний и сообщений об ошибках не выводится. Все действия по созданию каталога и индекса делались с помощью меню в SQL Management Studio. То есть вся ответственность лежит на MS.
24 июл 15, 16:32    [17931170]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9169
AlMal,

проверьте базу, у вас, возможно, проблемы с хранилищем. Зависание, скорее всего, говорит о том, что операция находится в состоянии ожидания ответа от внешних систем. Может это и штатная ситуация.

Кстати, установите последний сервис-пак и обновления.
24 июл 15, 17:20    [17931528]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
AlMal
Member

Откуда:
Сообщений: 44
Владислав!

Можете ли поконкретней пояснить как проверять базу?
Специального хранилища у меня нет - все базы живут на обычном винчестере.

Обновления поставлю.
24 июл 15, 20:47    [17932300]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
AlMal
Насколько я понимаю, установка автоматического обновления изменит только момент (во времени) обновления индекса.
Само же обновление будет происходить так же инкрементально.

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

Обновляя вручную, я хотя бы могу увидеть что процедура зависла и абортировать ее, избегая таким образом длительной неработоспособности сайта.

Еще раз, я обращаю внимание благородных донов на то, что вследствие весьма стандартной и легальной команды сервер переходит в явно ненормальное состояние и пребывает в оном пока не будет абортирована эта команда. Никаких прерываний и сообщений об ошибках не выводится. Все действия по созданию каталога и индекса делались с помощью меню в SQL Management Studio. То есть вся ответственность лежит на MS.


как минимум индексы будут обновляться "на лету", а не откладываться и потом грузить.
Просто на таких объемах не вижу смысла в обновлении по расписанию, для сервера это ничто.

а далее: читайте логи сервера, логи системы
24 июл 15, 21:09    [17932391]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
AlMal
Member

Откуда:
Сообщений: 44
Установил автоматическое обновление индекса.
Неделя прошла - зависаний нет.
Спасибо всем, кто откликнулся.
31 июл 15, 14:51    [17960366]     Ответить | Цитировать Сообщить модератору
 Re: Обновление полнотекстового индекса приводит к зависанию sql server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9169
AlMal,

Выполняйте регулярно резервное копирование и DBCC CHECKDB.
31 июл 15, 16:19    [17961003]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить