Найти в Дзене
Postgres DBA

Корреляционный анализ ожиданий СУБД PostgreSQL - поиск проблемных SQL запросов при продуктивной нагрузке

————— Проанализировать причины снижения скорости СУБД и найти проблемные запросы: Операционная скорость СУБД - снижается. Ожидания СУБД - растут. Относительная доля ожиданий - растет. Далее, описывается общая методика для определения потенциально проблемных запросов для типа ожидания IO. Ожидания других типов , анализируются аналогично. Столбцы таблицы Таблица отсортирована по столбцам QUERYID / WAITINGS TO CALL. Возможно, в ходе дальнейших экспериментов будет установлен другой способ ранжирования запросов. События ожидания: Выполнение процедуры ANALYZE во время продуктивной нагрузки на СУБД - приводит к ожиданиям. Необходимо пересмотреть порядок проведения регламентных работ на СУБД. События ожидания: Необходимо провести анализ плана выполнения, с целью снижения количествп операций дискового чтения. Использование корреляционного анализа позволяет:
Оглавление
Работа DBA в чем то , очень отдаленно, напоминает работу хирурга.
Работа DBA в чем то , очень отдаленно, напоминает работу хирурга.

✖️В архив ✖️

Актуальная методика

—————

Постановка задачи

Проанализировать причины снижения скорости СУБД и найти проблемные запросы:

Дашбоард мониторинга производительности СУБД
Дашбоард мониторинга производительности СУБД

Операционная скорость СУБД - снижается.

Ожидания СУБД - растут.

Относительная доля ожиданий - растет.

Порядок проведения корреляционного анализа

Операционная скорость на уровне кластера

Ось X - точка наблюдения Ось Y - значение операционной скорости
Ось X - точка наблюдения Ось Y - значение операционной скорости

Ожидания на уровне кластера

Ось X - точка наблюдения Ось Y - количество ожиданий СУБД
Ось X - точка наблюдения Ось Y - количество ожиданий СУБД

Корреляционный анализ на уровне кластера

Таблица коэффициентов корреляции
Таблица коэффициентов корреляции
  1. Средняя отрицательная корреляция между операционной скоростью и ожиданиями.
  2. Тип ожидания, имеющий наибольшую корреляция с общим количеством ожиданий - IO.
Ось X - точка наблюдения Ось Y - количество ожиданий типа IO
Ось X - точка наблюдения Ось Y - количество ожиданий типа IO

Далее, описывается общая методика для определения потенциально проблемных запросов для типа ожидания IO.

Ожидания других типов , анализируются аналогично.

Статистика выполнений и ожиданий по отдельным SQL запросам по типу ожидания IO

Таблица статистических данных выполнения и ожиданий по отдельным запросам.
Таблица статистических данных выполнения и ожиданий по отдельным запросам.

Столбцы таблицы

  • QUERYID : id SQL запроса
  • CORRELATION : коэффициент корреляции между ожиданиями типа IO по всем SQL запросам и ожиданиям типа IO по конкретному запросу.
  • CALLS : общее количество выполнений запроса за анализируемый период.
  • WAITINGS : Ожидания типа IO по конкретному запросу.
  • WAITINGS TO CALL : Отношение количество ожиданий к количеству выполнений. Среднее количество ожидания за одно выполнение.

Таблица отсортирована по столбцам QUERYID / WAITINGS TO CALL. Возможно, в ходе дальнейших экспериментов будет установлен другой способ ранжирования запросов.

Статистика выполнений и ожиданий по выбранным SQL-запросам

-7843470278038126227

Статистика выполнений и ожиданий для queryid =-7843470278038126227
Статистика выполнений и ожиданий для queryid =-7843470278038126227

События ожидания:

  • DataFilePrefetch: Ожидание асинхронной предвыборки из файла данных отношения.
  • DataFileRead : Ожидание чтения из файла данных отношения.
  • DataFileWrite : Ожидание записи в файл данных отношения.
  • WALSync : Ожидание помещения файла WAL в надёжное хранилище.
  • WALWrite : Ожидание записи в файл WAL.

Результат анализа по запросу -7843470278038126227:

Выполнение процедуры ANALYZE во время продуктивной нагрузки на СУБД - приводит к ожиданиям. Необходимо пересмотреть порядок проведения регламентных работ на СУБД.

-8198400089192679786

Статистика выполнений и ожиданий для queryid =-8198400089192679786
Статистика выполнений и ожиданий для queryid =-8198400089192679786

События ожидания:

  • DataFileRead : Ожидание чтения из файла данных отношения.

Результат анализа по запросу -8198400089192679786

Необходимо провести анализ плана выполнения, с целью снижения количествп операций дискового чтения.

Итог

Использование корреляционного анализа позволяет:

  1. Определить тип ожидания оказывающий наибольшее влияние на скорость СУБД.
  2. Выявить и ранжировать потенциально проблемные SQL запросы по корреляции с ожиданиями СУБД.