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

Откуда: Москва
Сообщений: 171
Всем добрый день.

Наблюдаю за своим SQL сервером довольно долго. Sp_UpdateStats выполняется джобом ежедневно.
Заметил особенность - многие запросы по нормально индексированным таблицам день ото дня начинают выполняться все медленнее и медленнее.
Раз в 2-3 месяца перегружается полностью сервер (в тот момент ставятся Windows обновления) и запросы начинают опять быстро выполняться, причем опять,- постепенно замедляясь.

Вопрос:
В какую сторону посмотреть?
Что нужно еще регулярно делать, чтобы избежать этого постепенного замедления?
28 фев 15, 21:31    [17326479]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Молодой,

при таком количестве инфы можно пованговать в сторону parameter sniffing
28 фев 15, 22:15    [17326589]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Возможно, слишком много Ad hoc запросов, планы забивают кэш.
Проблема может быть решена наращивание оперативной памяти (не до бесконечности, как некоторые готовы высказаться), Анализом поступающих к серверу запросов (возможно, будет достаточно использовать руководство планов). Если одноразовых однотипных запросов с разными параметрами слишком много, то можно попробовать включит принудительную параметризацию параметр базы IsParametrizationForced.
Но прежде убедитесь, что повышению производительности помогает обновление статистик.
28 фев 15, 23:10    [17326775]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
Пожалуй прав churupaha
У меня вся база построена на процедурах с параметрами, которые используют пользователи.
Доступа к таблицам и вьюхам у пользователей нет никакого.
Проблема снифинга как я понял упирается в понятие рекомпиляции кода.
MSDN также говорит, что
"Иногда необходимо принудительно выполнить перекомпиляцию процедуры, а иногда это выполняется автоматически.
Автоматическая перекомпиляция выполняется при каждом перезапуске SQL Server."

Как я понял должно помочь периодическое использование sp_recompile

Один небольшой вопрос тогда остается:

Для сервера
select @@version
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64)
Sep 21 2011 22:45:45
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)

Есть какая то команда, вызывающая перекомпиляцию всех процедур (всего кода),
или это можно сделать только курсорм по EXEC sp_recompile 'Имя таблицы' ?
28 фев 15, 23:29    [17326833]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Может речь идет о кеше планов?
Dbcc freeproccache
1 мар 15, 02:16    [17327176]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
ОК
Примерно через месяц - когда опять запросы начнут подтормаживать - проверю.
Сначала через freeproccache, потом если не поможет
курсорм по EXEC sp_recompile
Результат внесу в топик - может еще кому пригодится
2 мар 15, 13:37    [17331442]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Нет, рекомпилировать не надо.
2 мар 15, 14:12    [17331642]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
QWERTY!
Guest
В обслуживание MSSQL БД, достаточно много всего, не только "Обновление статистик" и уже упомянутая чистка "Процедурный кэш", почитайте информацию по обслуживанию баз данных в любой книге "Администрирования БД MSSQL", и лишь потом осознав все предназначения регламентгых мероприятий, примините к своей БД.

Осознать - это понять а не липить сломя голову все что прочитали на просторах интернета.
2 мар 15, 17:15    [17333195]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Молодой
Есть какая то команда, вызывающая перекомпиляцию всех процедур (всего кода),
или это можно сделать только курсорм по EXEC sp_recompile 'Имя таблицы' ?
Прежде чем перекомпилировать все подряд, нужно выяснить в чем проблема. Возьмите пару-тройку запросов, которые начинают медленно работать. Посмотрите планы, посмотрите чего ждут, потом попробуйте рекомпилировать и сравнить. Также проверьте чем занята память через 2-3 месяца после рестарта.
2 мар 15, 23:11    [17334829]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Молодой
Member

Откуда: Москва
Сообщений: 171
Господа, как говорится - Вы будете смеяться, но проблема обнаружилась!
Давайте зададимся вопросом: - что происходит при перезагрузке SQL сервера - еще, кроме всего перечисленного...?
- Еще сервер создает в журнале логов новый раздел Current и начинается запись логов в этот раздел.
Ерунда состоит в том, что мой сервер в Интернете вынуждено виден по постоянному IP адресу со стандартным портом 1433.
В логи я давно перестал смотреть, потому что там был сплошной поток фиксаций попыток перебора паролей. И как говорится - зря...
Со временем, количество роботов, желающих крякнуть пароль выросло просто до немыслимых количеств.
Такое впечатление, что все хакеры-спамеры планеты поставили целью жизни подобрать наш пароль ).
Как следствие - сервер занимается исключительно этим журналом и с его ростом начинает свое основное время уделять только ему.
Перезагрузка обнуляет журнал, и сервер некоторое время дышит более менее свободно, и так далее...
То что: сами - лохи, не поменяли стандартный порт изначально, комментировать не надо ))
Как решать проблему тоже понятно:
либо не писать эти события, либо обнулять журнал ну или наконец поменять порт )) - это все ясно..
Вопрос в другом:
Мог ли я увидеть проблему такого рода нагрузки, методами SQL сервера, не заглядывая в этот журнал?
17 май 15, 11:22    [17650891]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
nscl
Guest
разрешите соединения на порт 1433 только из доверенных сетей. Встроенный файервол виндовс это умеет.
Выставлять MSSQL голой жопой в интернеты - рискованная затея.
17 май 15, 12:34    [17651075]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
nscl
Guest
MSSQL пишет логи (только не транзакционные логи баз, а именно сообщения о своей работе, доступны как через management studio, так и через Event Viewer), вот в этих самых логах будет адов срач из-за постоянных попыток сбрутить пароль sa и тому подобное.

Перевешивать порт никуда не надо (современные сканеры портов умеют определять тип сервиса на нестандартном порту), просто зафайервольте порт 1433.
17 май 15, 12:38    [17651090]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Молодой
Перезагрузка обнуляет журнал, и сервер некоторое время дышит более менее свободно, и так далее...

Перезагрузка начинанает новый error log, а не обнуляет
18 май 15, 08:28    [17653429]     Ответить | Цитировать Сообщить модератору
 Re: Почему требуется периодическая перезагрузка SQL сервера?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Молодой
Перезагрузка обнуляет журнал, и сервер некоторое время дышит более менее свободно, и так далее...
Ну и как же вы определили, что именно с этим логом связаны тормоза?
19 май 15, 21:37    [17663893]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить