Некоторое время назад встал вопрос оптимизации работы SQL сервера. Не являясь DBA и обладая знаниями SQL на уровне простых запросов испытываю некоторые сложности в этом вопросе. По результатам поиска свёл задачи оптимизации к следующим:
Обновление статистик
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'
Очистка процедурного КЭШа
DBCC FREEPROCCACHE
Дефрагментация индексов
sp_msforeachtable N'DBCC INDEXDEFRAG ([ИМЯ БАЗЫ ДАННЫХ], ''?'')'
Реиндексация таблиц
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
Собственно, вопрос. Насколько верны данные запросы и дадут ли они видимый эффект в работе с базами.
[Сервер 2008 R2 Express ADV, несколько баз на грани 8Гб+несколько связанных баз сообщений ED, autoshrink=true]. В данный момент, пользователи испытывают досточно ощутимые задержки при работе с декларациями, от чего собственно и начались пляски с бубном.
Заранее благодарен за любую помощь.
-
-
Обсуждения на сайте Альта-Софт
-
Вопрос по оптимизации SQL
Модераторы: Renat, Gala, alta_olg, expert, Lemur
-
- Почетный участник
- Сообщения: 101
- На форуме: c 06 ноя 2004
- Откуда: Альта-Софт
Сказал: 0 ед.
Получил: 20 ед.
Получил: 20 ед.
Re: Вопрос по оптимизации SQL
Про вышеупомянутые запросы ничего не могу сказать (ни плохого, ни хорошего).
Но обычно все эти "оптимизации" ощутимого эффекта не дают, особенно на Express'ах, где основная проблема производительности связана не с самой БД, а ее размером в сочетании с ограничением на используемую память (не более 1 гига). Т.е. MS специально ограничил размер используемой оперативки в своей БЕСПЛАТНОЙ версии, чтобы Вы сильно далеко (в плане размера рабочей БД) на ней не уехали
Если у Вас несколько больших баз ГТД-ПРО, то можно посоветовать доп. экземпляр SQL Server поставить, т.к. получается что этот 1 гиг делится между ними и каждой БД достается еще меньше оперативки и начинаются тормоза.
Но обычно все эти "оптимизации" ощутимого эффекта не дают, особенно на Express'ах, где основная проблема производительности связана не с самой БД, а ее размером в сочетании с ограничением на используемую память (не более 1 гига). Т.е. MS специально ограничил размер используемой оперативки в своей БЕСПЛАТНОЙ версии, чтобы Вы сильно далеко (в плане размера рабочей БД) на ней не уехали
Если у Вас несколько больших баз ГТД-ПРО, то можно посоветовать доп. экземпляр SQL Server поставить, т.к. получается что этот 1 гиг делится между ними и каждой БД достается еще меньше оперативки и начинаются тормоза.
С уважением, Дмитрий.
Re: Вопрос по оптимизации SQL
Спасибо за ответ. Пока провёл перестроение индекса одной из баз - визуально работать стало легче, но пока нагрузка не полная.
- aiki
- Дед
- Сообщения: 302
- На форуме: c 14 апр 2010
- Откуда: СП "Интегра", Ижевск
Сказал: 7 ед.
Получил: 74 ед.
Получил: 74 ед.
Re: Вопрос по оптимизации SQL
В свое время, пока был старый и хилый сервер, помогло отключение параметра "показывать панель ЭД-2 в списке ГТД", навигация ускорилась.
-
- Почетный участник
- Сообщения: 101
- На форуме: c 06 ноя 2004
- Откуда: Альта-Софт
Сказал: 0 ед.
Получил: 20 ед.
Получил: 20 ед.
Re: Вопрос по оптимизации SQL
Это только на тормоза скроллинга по списку деклараций влияет.aiki писал(а):В свое время, пока был старый и хилый сервер, помогло отключение параметра "показывать панель ЭД-2 в списке ГТД", навигация ускорилась.
С тех пор мы сделали обновление этой панели пореже (только когда интенсивный скроллинг заканчивается).
В общем, это тоже "копейки"
С уважением, Дмитрий.
- aiki
- Дед
- Сообщения: 302
- На форуме: c 14 апр 2010
- Откуда: СП "Интегра", Ижевск
Сказал: 7 ед.
Получил: 74 ед.
Получил: 74 ед.
Re: Вопрос по оптимизации SQL
Ну, тогда следует проанализировать мат. часть. На сервере нужно запустить монитор ресурсов, и проанализировать показания при активности. Может "затыки" на аппаратном уровне идут, частое обращение к свопу из-за не хватки ОЗУ, или длинные очереди и таймаут по обработке запросов к дисковой подсистеме, отклик сетевого интерфейса, загрузка ЦП.