Юлия Шабунио
«Сервер тормозит! Ничего не выполняется! Весь отдел не может работать!» –
не таков ли ночной кошмар многих администраторов Microsoft SQL Server? Увы,
порой скорость работы этой базы данных падает без видимых причин. Что же
случилось?
Работа администратора базы данных Microsoft SQL Server порой бывает легка и
необременительна. В самом деле, если настроена регулярная архивация, вдумчиво
прописаны права пользователей, везде стоит последняя версия клиентского
приложения, то заняться бывает нечем. Но увы, рано или поздно звонит (а то и
прибегает) какой-нибудь «Главный Пользователь» и громко жалуется на то, что
«всё тормозит и ничего не работает». При этом беглый анализ ситуации
показывает, что вроде бы всё в порядке, сервисы запущены, в логах ошибок нет.
То есть всё работает. Но очень медленно. И приходится администратору базы
данных, а то и программисту из службы техподдержки брать универсальные
инструменты Microsoft – EM (SQL Server Enterprise Manager) и QA (SQL Query Analyzer)
и браться за решение проблемы производительности Microsoft SQL Server.
Мой опыт показывает, что причин внезапных
«торможений» не так уж и много.
|
Пять основных
причин снижения производительности
|
|
1
|
Ошибки в индексах
|
|
2
|
Неправильные планы запросов
|
|
3
|
Распределённые блокировки
|
|
4
|
Дедлоки
|
|
5
|
Проблемы с памятью, диском и процессором
|
Все примеры в данной статье рассмотрены на базе Microsoft
SQL Server 2000. Основные причины замедления работы будут актуальны и для
2005-й версии, но способы решения для них могут заметно отличаться (впрочем, в
2005-й наверняка появятся свои собственные, уникальные способы работать
медленно). Результаты DBCC-запросов и структура системных таблиц могут для них
заметно отличаться, но общая логика работы остаётся прежней.