Блокирующие запросы и взаимоблокировки в базах данных Ключ-АСТРОМ
Блокирующие запросы и взаимоблокировки в базах данных Ключ-АСТРОМ
Обзор
Конфликты блокировок, блокирующие запросы и взаимоблокировки — одни из самых распространённых причин снижения производительности баз данных. Приложение Базы данных отображает метрики блокировок и ожиданий с отслеживаемых экземпляров баз данных, чтобы вы могли обнаруживать конфликты на ранней стадии, выявлять участвующие запросы и устранять проблемы до того, как они повлияют на производительность приложения.
Ключевые термины
Чтобы интерпретировать метрики блокировок и ожиданий в приложении Базы данных, полезно понимать, как сессии конкурируют за ресурсы и где они в итоге ожидают.
- Блокирующий запрос
Сессия, которая удерживает блокировку ресурса (строки, страницы или таблицы), необходимого другой сессии. Ожидающая сессия блокируется до снятия блокировки или истечения тайм-аута. Одна длительная транзакция может заблокировать множество сессий одновременно, снижая пропускную способность.
- Взаимоблокировка
Две или более сессий удерживают блокировки, необходимые друг другу, поэтому ни одна не может продолжить работу. Движок обнаруживает цикл и завершает одну сессию (жертву взаимоблокировки), которая должна повторить попытку. Блокировка — это очередь; взаимоблокировка — это цикл.
- Событие ожидания
Сигнал движка, фиксирующий, почему сессия приостановилась. Ожидания блокировок — одна из категорий; другие включают ввод-вывод, планирование CPU, сеть и конфликты защёлок. Анализ событий ожидания вместе с метриками блокировок и взаимоблокировок показывает, где база данных тратит время на ожидание, а не на выполнение.
Оповещения о конфликтах блокировок
Создавайте оповещения о здоровье на основе метрик блокировок и ожиданий, чтобы получать уведомления при достижении конфликтами порогового значения. Используйте вкладку Шаблоны оповещений в приложении Базы данных или настройте пользовательские детекторы в приложении Обнаружение аномалий. Категория оповещений Запросы охватывает запросы, которые могут вызывать блокировки; категория Активность экземпляра базы данных охватывает нижестоящие эффекты, такие как количество подключений и доступность.
Пробелы в мониторинге
Если данные метрик блокировок или ожиданий отсутствуют для экземпляра базы данных, вкладка Рекомендации в приложении Базы данных отмечает это в разделе Проверка пробелов в мониторинге. Используйте это представление, чтобы выявить неполную видимость и понять, какие изменения конфигурации необходимы, например включение набора функций waitEvents для Oracle или включение инструментирования Performance Schema для MySQL или MariaDB.