![](https://habrastorage.org/webt/3n/t3/ou/3nt3ouckicz65xztkx1lntnvdxo.png)
В прошлой статье об инструменте для мониторинга Foglight for Databases мы рассказывали о возможностях контроля из единого интерфейса SQL Server, Oracle, PostgreSQL, MySQL, SAP ASE, DB2, Cassandra и MongoDB. Сегодня разберём подходы к быстрому выявлению причин нештатной работы Microsoft SQL Server:
- Поиск источника блокировки;
- Сравнение настроек БД «было-стало» с привязкой к метрикам производительности;
- Поиск изменений в структуре БД, из-за которых снизилась производительность.
Подробности под катом.
Foglight for Databases — инструмент мониторинга за производительностью и изменениями в популярных базах данных. Если вы не знакомы с этим продуктом — рекомендуем прочитать предыдущую статью. А ниже мы привели скриншоты из интерфейса для демонстрации возможностей Foglight и простоты поиска проблем в БД.
Поиск источника блокировки
Поиск причины блокировок можно вести в Management Studio. Но рабочей станции с этой утилитой может не оказаться под рукой, да и открывать консоль не всегда удобно. В Quest Foglight найти причину блокировку можно за считанные клики. На скриншоте ниже вы видите основную консоль мониторинга баз данных.
![image](https://habrastorage.org/getpro/habr/post_images/05f/5a5/0df/05f5a50dfd3b80b8584ba5d103ebbaa8.png)
Дежурный администратор, который уже получил уведомление, переходит в представление SQL PI (Performance Investigator). В столбце Workload заметно красное поле, которое означает ненулевое значение параметра Lock Wait.
![image](https://habrastorage.org/getpro/habr/post_images/680/4da/9e8/6804da9e89d4470476c2edf2ba3150ca.png)
После клика по графику Workload открывается детальное представление источников нагрузки на БД, а в столбце слева меню для проведения многомерного анализа производительности. Здесь, как и на скриншоте выше видно, что блокировка вызывает большую утилизацию ресурсов. В меню слева есть специальное представление Locked Objects, в котором и обнаружится заблокированный объект.
![image](https://habrastorage.org/getpro/habr/post_images/703/cea/2d4/703cea2d4f6e07f4bee7e402e40f0c34.png)
В Locked Objects хранятся заблокированные объекты. В правой части экрана причины блокировок: длительность, с какого сервера (или рабочей станции), какой программой, от какого пользователя и исполняемый объект, который привёл к блокировке.
![image](https://habrastorage.org/getpro/habr/post_images/ab8/18f/1d9/ab818f1d982f046b9d2b50476010449b.png)
При переходе на исполняемый объект, откроется новое представление с возможностью просмотра содержимого этого объекта. И после нажатия на View Batch Text откроется исполненный код.
![image](https://habrastorage.org/getpro/habr/post_images/c5a/2ce/783/c5a2ce783d3ca687838ff4370560fb0f.png)
Ускорение времени диагностики — залог успешной работы команды ИТ.
Сравнение настроек БД «было-стало»
К драматическому снижению производительности могут также приводить изменения, произведенные разработчиками или администраторами БД. Но в момент проблемы неважно кто это сделал — важно что произошло. С этим и попробуем разобраться. Открываем контекстное меню проблемного экземпляра БД.
![image](https://habrastorage.org/getpro/habr/post_images/753/709/c87/753709c8713b6ba86ee8ad0f40fa5d70.png)
В открывшемся меню нужно перейти на SQL PI (Performance Investigator), чтобы открыть представление с многомерным анализом.
![image](https://habrastorage.org/getpro/habr/post_images/7d0/22e/770/7d022e77022981f6cb01eb26572f13d3.png)
Перейдём на представление Baseline для оценки поведения метрики в сравнении с её обычными значениями.
![image](https://habrastorage.org/getpro/habr/post_images/107/f6a/b01/107f6ab01025f5bc0c502baa84419e94.png)
На графике видно, что после 13:40 начался аномальный рост потребления ресурсов.
![image](https://habrastorage.org/getpro/habr/post_images/cb4/4c5/708/cb44c57083073ef36d32cef247323306.png)
В это представлении настроим что с чем сравнивать. Сейчас рассмотрим сравнение метрики самой с собой (по базовой линии), т.к. выше выявили аномальное отклонение. Вообще, можно также сравнить производительность и с другим экземпляром БД.
![image](https://habrastorage.org/getpro/habr/post_images/b43/aba/f3c/b43abaf3cdb4c56479fe922af34d7805.png)
После выбора объектов для сравнения появится заветная кнопка Compare.
![image](https://habrastorage.org/getpro/habr/post_images/82a/2ad/1c2/82a2ad1c2892e4efdf171dd7b735ba1b.png)
На среднем представлении видно, что аномальные значения наблюдались по метрикам: Active Time, Executions и Logins Rate. Начнём новое сравнение для выявления изменений.
![image](https://habrastorage.org/getpro/habr/post_images/ad1/deb/cbf/ad1debcbf8bed4cafcf86abc7b9bc21f.png)
Сравним значения метрик с самими собой, но день назад.
![image](https://habrastorage.org/getpro/habr/post_images/b7f/2df/d77/b7f2dfd77074740927818754e762f66c.png)
После выбора настроек, появится кнопка Compare, на которую нужно нажать.
![image](https://habrastorage.org/getpro/habr/post_images/e1f/e17/ba0/e1fe17ba0c435d2e9995ea6b54f38595.png)
Появится представление, на котором есть измерения для сравнения. Для демонстрации мы выберем пункт меню Programs. В разделе Statistics уже виден двукратный рост значения метрики Executions.
![image](https://habrastorage.org/getpro/habr/post_images/16c/f85/158/16cf851585a23c48f0c76c4130b35e6d.png)
Слева и справа от шкалы в разделе меню Programs отображаются значения метрик. Здесь видим, что Active Time и Executions выросли почти в два раза, а это повод для проведения детального разбора ситуации.
![image](https://habrastorage.org/getpro/habr/post_images/28a/de8/7a7/28ade87a7f6dd7b65442800c2cf12147.png)
Таким же образом можно проводить сравнительный анализ и по другим метрикам, а любое представление выгрузить в PDF-отчёт.
Поиск изменений в структуре БД
Изменения индексов, execution plans и других объектов может носить недокументированный характер. Разработчик или администратор БД вносит, казалось бы, незначительные изменения, о которых через некоторое время может забыть. В интерфейсе Foglight for Databases изменения конфигурации привязываются к изменениям производительности. Для выявления изменений переходим с главного экрана мониторинга БД на представление Workload.
![image](https://habrastorage.org/getpro/habr/post_images/083/e39/ff0/083e39ff08e06d407481bca49ec12b7c.png)
Допустим, нам известно, что с какой-то клиентской машины генерируется большая нагрузка на БД. Раскрываем в представлении слева Client Machines.
![image](https://habrastorage.org/getpro/habr/post_images/8aa/e87/293/8aae87293feb66c7174efc6250b881d8.png)
Batches отсортированы в соответствии с создаваемой нагрузкой на БД. Перейдём на первый объект в списке и далее посмотрим изменения по нему (Change Tracking).
![image](https://habrastorage.org/getpro/habr/post_images/e00/f44/6fb/e00f446fbd8cc4d8ed44432e8af849a9.png)
На графике, согласно легенде справа, отмечены соответствующие изменения за выбранный период. Первое изменение здесь — удаление индекса, второе — добавление нового execution plan. Как видно, после удаления индекса резко возросла нагрузка Other Wait — фиолетовая зона (к ней также относится выполнения batch job). Четвертое изменение — увеличение значения уровня параллелизма, что потенциально привело к повышение количества запросов (IO Wait — голубая зона). Рассмотрим последствия добавления нового execution Plan.
![image](https://habrastorage.org/getpro/habr/post_images/ec9/24b/ac9/ec924bac9168c6b676fad8a2326b6b6f.png)
После перехода открылись детали нового execution plan. Теперь сравним произошедшие изменения.
![image](https://habrastorage.org/getpro/habr/post_images/d44/0fb/362/d440fb3629400dba3ade2f8676d1e1c6.png)
После перехода открылись детали нового execution plan.
![image](https://habrastorage.org/getpro/habr/post_images/687/134/6c1/6871346c1ee748f9d48e430c1005103d.png)
Этот же execution plan можно открыть в Management Studio прямо из интерфейса Quest Foglight.
![image](https://habrastorage.org/getpro/habr/post_images/c8c/a6b/77c/c8ca6b77c6567cb7552e8c34a692142f.png)
Так он выглядит в консоли Management Studio.
![image](https://habrastorage.org/getpro/habr/post_images/064/407/95c/06440795cd09a85818735760ad68c2b7.png)
При переходе на представление History можно увидеть изменения метрик во времени.
![image](https://habrastorage.org/getpro/habr/post_images/a0e/565/d61/a0e565d619e0e20d3cbcd257e73002ae.png)
Представление History можно использовать для оценки влияния изменений на ту или иную метрику. Далее переходим на представление Other.
![image](https://habrastorage.org/getpro/habr/post_images/49e/b0e/d12/49eb0ed1232c3d863ed8f83ec937548e.png)
На этом представлении видно какие batches повлияли на нагрузку БД. Они уже отсортированы в порядке убывания.
![image](https://habrastorage.org/getpro/habr/post_images/089/6f4/aa9/0896f4aa95bc99af4a2e3986bc44ee37.png)
Кроме автоматического отслеживания изменений, пользователь Foglight может добавить изменения вручную В случае снижения производительности, дежурный администратор уже не будет искать причину деградации сервиса.
Если вам понравился Foglight for Databases и вы хотели бы его попробовать на своих БД — оставьте заявку на получение дистрибутивов и триального ключа в форме обратной связи на нашем сайте. Стабильной работы баз данных и быстрой локализации нештатной работы!
LaRN
Требуются ли права sa для работы утилиты, ну или иначе: какие нужны права для работы этой утилиты?
GalsSoftware Автор
Права sa нужны только для создания специального пользователя для мониторинга и его объектов. Под спойлером скрипт. Однако, если используется технология mirroring, без прав dba не обойтись.