Published on

December 16, 2019

Понимание настройки производительности SQL Server

Настройка производительности является важным аспектом управления базой данных SQL Server. Она включает анализ планов запросов, планов выполнения, индексов, разделения и других факторов для оптимизации производительности запросов и снижения использования ресурсов. В этой статье мы рассмотрим четыре события, которые могут помочь выявить запросы, требующие настройки производительности.

1. Взаимоблокировки

Взаимоблокировки возникают, когда два или более процесса ожидают освобождения ресурсов друг другом, что приводит к ситуации взаимной блокировки. Мониторинг и анализ взаимоблокировок позволяют выявить задействованные процессы, жертвы, типы блокировок и блокировки, удерживаемые/запрашиваемые каждым процессом. Эта информация помогает нам понять причину взаимоблокировок и принять соответствующие меры для их предотвращения.

2. Прерывания приложения

Прерывания приложения, также известные как тайм-ауты, возникают, когда приложение прерывает выполнение запроса из-за превышения длительности. Собирая информацию о прерываниях приложения, такую как использование ЦП, длительность, операции чтения/записи, имена базы данных/клиента/пользователя и SQL-запросы, мы можем выявить запросы, которые занимают слишком много времени для выполнения, и оптимизировать их соответствующим образом.

3. Блокировка

Блокировка возникает, когда один процесс удерживает блокировку на ресурсе, что мешает другим процессам получить к нему доступ. Мониторинг и анализ событий блокировки позволяют выявить задействованные процессы, заблокированный ресурс, тип ожидания и уровень изоляции. Эта информация помогает нам выявить и устранить проблемы с блокировкой, улучшая общую производительность базы данных.

4. Долгие запросы

Долгие запросы могут значительно влиять на производительность базы данных. Захватывая запросы, превышающие определенный порог длительности, мы можем выявить запросы, требующие оптимизации. Информация, такая как время ЦП, длительность, операции чтения/записи, имя базы данных, имя клиентского приложения, имя пользователя NT и SQL-запрос, помогает нам анализировать и оптимизировать эти долгие запросы.

Для эффективного анализа этих событий мы можем использовать сессии расширенных событий (XE) в SQL Server. Расширенные события предоставляют гибкий и эффективный способ захвата и анализа событий, связанных с производительностью. В этой статье мы обсудили процесс разбора XML из сессий расширенных событий с использованием хранимой процедуры под названием “event_GetEventData”. Эта хранимая процедура позволяет нам определить данные сессии XE, которые мы хотим анализировать, и отфильтровать определенные номера ошибок, сообщения об ошибках и имена приложений.

Используя возможности расширенных событий и хранимую процедуру “event_GetEventData”, мы можем получить ценные сведения о производительности нашей базы данных SQL Server. В следующей части этой серии мы рассмотрим, как создать сводный отчет и проанализировать результаты для дальнейшей оптимизации производительности наших запросов.
Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.