Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
AlMal Member Откуда: Сообщений: 44 |
В довесок хотелось бы понять как корректно запретить полнотекстовое индексирование. Выбираю таблицу в Management Studio, правая кнопка - Полнотекстовый индекс - Отключить. Пытается выполнить и через примерно 10 секунд выдается ошибка 1222 (Time out) (см. скриншот по сслыке https://yadi.sk/i/k5H4AygYi4zaf ) Вроде бы по умолчанию таймаут установлен в бесконечность. Пытался перед выполнением выполнить команду set lock_timeout -1 не помогло. До этого боролся с этим эффектом перезагрузкой сервера и выполнял запрет индексирования сразу после перезагрузки. Но каждый раз сервер перегружать не хочется. Хочется чтобы у майкрософта работали их же стандартные меню... Есть мысли как не перегружая сервер отключить индексирование (чтобы потом удалить и перестроить заново)? |
24 июл 15, 15:29 [17930752] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
"Индекс обновлялся по таймеру каждые 5 минут командой ALTER FULLTEXT INDEX ON [Elements] START INCREMENTAL POPULATION Команда отрабатывала за долю секунды. Это не удивительно потому что в этой таблице всего 390000 записей и добавляется ежедневно по 500-600." а зачем при таком объеме такие сложности? поставьте автоматическое обновление и забудьте о проблемах |
24 июл 15, 16:14 [17931075] Ответить | Цитировать Сообщить модератору |
AlMal Member Откуда: Сообщений: 44 |
Насколько я понимаю, установка автоматического обновления изменит только момент (во времени) обновления индекса. Само же обновление будет происходить так же инкрементально. Насколько я могу судить, в моем случае не важен момент запуска обновления - после некоторого количества успешных обновлений сервер отказывается их выполнять. Обновляя вручную, я хотя бы могу увидеть что процедура зависла и абортировать ее, избегая таким образом длительной неработоспособности сайта. Еще раз, я обращаю внимание благородных донов на то, что вследствие весьма стандартной и легальной команды сервер переходит в явно ненормальное состояние и пребывает в оном пока не будет абортирована эта команда. Никаких прерываний и сообщений об ошибках не выводится. Все действия по созданию каталога и индекса делались с помощью меню в SQL Management Studio. То есть вся ответственность лежит на MS. |
24 июл 15, 16:32 [17931170] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
AlMal, проверьте базу, у вас, возможно, проблемы с хранилищем. Зависание, скорее всего, говорит о том, что операция находится в состоянии ожидания ответа от внешних систем. Может это и штатная ситуация. Кстати, установите последний сервис-пак и обновления. |
24 июл 15, 17:20 [17931528] Ответить | Цитировать Сообщить модератору |
AlMal Member Откуда: Сообщений: 44 |
Владислав! Можете ли поконкретней пояснить как проверять базу? Специального хранилища у меня нет - все базы живут на обычном винчестере. Обновления поставлю. |
24 июл 15, 20:47 [17932300] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
как минимум индексы будут обновляться "на лету", а не откладываться и потом грузить. Просто на таких объемах не вижу смысла в обновлении по расписанию, для сервера это ничто. а далее: читайте логи сервера, логи системы |
||
24 июл 15, 21:09 [17932391] Ответить | Цитировать Сообщить модератору |
AlMal Member Откуда: Сообщений: 44 |
Установил автоматическое обновление индекса. Неделя прошла - зависаний нет. Спасибо всем, кто откликнулся. |
31 июл 15, 14:51 [17960366] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8316 |
AlMal, Выполняйте регулярно резервное копирование и DBCC CHECKDB. |
31 июл 15, 16:19 [17961003] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |