Добавить в корзинуПозвонить
Найти в Дзене
Postgres DBA

PG_HAZEL : Влияние расчета времени выполнения тестового запроса на производительность СУБД.

В физике эффектом наблюдателя называют теорию, что простое наблюдение явления неизбежно изменяет его. Часто это следствие несовершенства применяемых инструментов, которые по своему принципу работы изменяют состояние измеряемой величины. Примером служит проверка давления в автомобильных шинах; это трудно сделать, не выпуская немного воздуха при соединении с манометром; кроме того, прибор сам имеет какой-то объём. Невозможно увидеть какой-то объект без облучения его светом или другими частицами (электронами в электронном микроскопе), которые влияют на состояние объекта, а поглощение квантов для измерения освещённости уменьшает её. Даже если эффект наблюдателя невелик, объект всё равно изменяет состояние. Этот эффект наблюдается во многих областях физики, но обычно может быть уменьшен подбором эффективных инструментов и/или использованием лучших методов наблюдения. Эффект наблюдателя — Рувики: Интернет-энциклопедия Оценить влияние расчета медианного времени выполнения тестовых запросов пр
Оглавление
Наблюдение и фиксация результата - влияет на событие наблюдения.
Наблюдение и фиксация результата - влияет на событие наблюдения.

Эффект наблюдателя

В физике эффектом наблюдателя называют теорию, что простое наблюдение явления неизбежно изменяет его. Часто это следствие несовершенства применяемых инструментов, которые по своему принципу работы изменяют состояние измеряемой величины. Примером служит проверка давления в автомобильных шинах; это трудно сделать, не выпуская немного воздуха при соединении с манометром; кроме того, прибор сам имеет какой-то объём. Невозможно увидеть какой-то объект без облучения его светом или другими частицами (электронами в электронном микроскопе), которые влияют на состояние объекта, а поглощение квантов для измерения освещённости уменьшает её. Даже если эффект наблюдателя невелик, объект всё равно изменяет состояние. Этот эффект наблюдается во многих областях физики, но обычно может быть уменьшен подбором эффективных инструментов и/или использованием лучших методов наблюдения.

Эффект наблюдателя — Рувики: Интернет-энциклопедия

Задача

Оценить влияние расчета медианного времени выполнения тестовых запросов при выполнении нагрузочного тестирования , на производительность СУБД.

Необходимость расчета медианного времени выполнения тестового запроса:

Порядок расчета времени выполнения тестового запроса

◽Тестовый запрос выполняется в БД нагрузочного тестирования (pgbench_db).

◽Хранение и расчет времени выполнения тестового запроса выполняется в БД мониторинга производительности (performance_db).

  1. Зафиксировать время начала выполнения тестового запроса.
  2. Выполнить тестовый запрос .
  3. Зафиксировать время окончания тестового запроса.
  4. Передать в performance_db время начала и окончания тестового запроса .

Для передачи данных между pgbench_db и performance_db используется стандартное расширение dblink:

Postgres Pro Enterprise : Документация: 15: F.15. dblink

Постановка эксперимента

Эксперимент-1 (Сценарий-5)

Нагрузочное тестирование по сценарию "Mix"

Эксперимент-2 (Сценарий-6)

Нагрузочное тестирование по сценарию "Mix Without Median Time"

🗓️Новый сценарий - "Mix Without Median Time": ℹ️Не рассчитывать медианное время выполнения тестовых запросов ➡️Исключить влияние вызова dblink и insert при фиксации времени начала и окончания тестового запроса⚠️ 📝Сравнить характерные ожидания для стандартного режима и режима без расчёта медианного времени . ◽Расширенный сценарий нагрузочного тестирования СУБД: 1️⃣Запуск в стандартном режиме…
Postgres DBA23 мая 2025

Для экономии времени, предельная нагрузка уменьшена до 50 соединений.

Результаты сравнительных экспериментов

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

Сравнительная таблица операционной скорости
Сравнительная таблица операционной скорости

Эксперимент-1 (Сценарий-5)

Ось X - нагрузка в ходе тестирования. Ось Y - операционная скорость
Ось X - нагрузка в ходе тестирования. Ось Y - операционная скорость

Эксперимент-2 (Сценарий-6)

Ось X - нагрузка в ходе тестирования. Ось Y - операционная скорость
Ось X - нагрузка в ходе тестирования. Ось Y - операционная скорость

Результат

  1. Операционная скорость кардинально выросла.
  2. Значение нагрузки соответствующей максимальной скорости - не изменилось.

Корреляция и ожидания СУБД

Сравнительная таблица корреляции ожиданий СУБД
Сравнительная таблица корреляции ожиданий СУБД
Сравнительная таблица общего количества ожиданий СУБД
Сравнительная таблица общего количества ожиданий СУБД

Результаты

  1. Снижение линии регрессии операционной скорости для сценария-6 кардинально уменьшилось и составило менее 1%. Для сценария-5 снижение линии регрессии составило 10%.
  2. Для сценария-6 отсутствует корреляция с типом ожидания IO.
  3. Для сценария-6 кардинально снизилось количество ожиданий IO.
  4. Для сценария-6 кардинально увеличилось количество ожиданий Lock , LWLock в связи с резким ростом операционной скорости СУБД.

Корреляция по событию ожидания "LWLock" для тестовых запросов

Сценарий "Select only"

Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "Select only"
Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "Select only"
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select only" для сценария-5.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select only" для сценария-5.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select only" для сценария 6.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select only" для сценария 6.

Сценарий "Select+Update"

Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "Select+Update"
Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "Select+Update"
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select+Update" для сценария-5.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select+Update" для сценария-5.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select+Update" для сценария-6.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Select+Update" для сценария-6.

Сценарий "Insert only"

Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "Insert only".
Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "Insert only".
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Insert only" для сценария-5.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Insert only" для сценария-5.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Insert only" для сценария-6.
Ось X - событие ожидания. Ось Y - абсолютное и относительности количество ожиданий по тестовому сценарию "Insert only" для сценария-6.

Сценарий "CPU Load"

Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "CPU Load".
Сравнительная таблица по корреляции и количеству ожиданий по тестовому сценарию "CPU Load".

Общие результаты для всех сценариев:

  1. Кардинальное снижение событий ожидания ProcArray в эксперименте-2.
  2. Кардинальное увеличение прочих событий ожидания в эксперименте-2 в связи с ростом операционной скорости.
ProcArray : Ожидание при обращении к общим структурам данных в рамках процесса
Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики

Итоги

  1. Использование dblink оказывает кардинальное влияние на снижение скорость СУБД, даже при доступе к БД внутри одного кластера.
  2. Характер, корреляция и общая картина ожидания при использовании и неиспользовании расширения dblink существенно изменяется.
  3. Основным следствием использования dblink является рост ожиданий и корреляция с типом ожидания IO.
  4. При неиспользовании расширения dblink - кардинально снижается количество событий ожидания ProcArray.
  5. ⚠️ГИПОТЕЗА⚠️ : рост ожиданий ProcArray при использовании расширения dblink связано с увеличением времени транзакции.
  6. Нагрузка, соответствующая максимальной производительности СУБД - не зависит от использования расширения dblink.

Изменение порядка проведения нагрузочного тестирования на примере тестовой СУБД.

1. Для оценки предельной нагрузки на СУБД по значению медианного времени выполнения тестовых запросов - используется Сценарий-5:

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

Ось X - нагрузка на СУБД. Ось Y - операционная скорость СУБД.
Ось X - нагрузка на СУБД. Ось Y - операционная скорость СУБД.

Максимальная скорость достигается при общей нагрузке = 18 соединений.

Медианное время выполнения сценария "Select only"

Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "Select only"
Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "Select only"
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "Select only" по сравнению с  оптимальной нагрузкой.
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "Select only" по сравнению с оптимальной нагрузкой.

Увеличение медианного времени выполнения тестового запроса по сценарию "Select only " свыше 100% начинается после общей нагрузки 37 соединений.

Медианное время выполнения сценария "Select+Update"

Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "Select+Update"
Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "Select+Update"
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "Select+Update" по сравнению с  оптимальной нагрузкой.
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "Select+Update" по сравнению с оптимальной нагрузкой.

Увеличение медианного времени выполнения тестового запроса по сценарию "Select+Update " свыше 100% начинается после общей нагрузки 37 соединений.

Медианное время выполнения сценария "Insert only"

Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "Insert only"
Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "Insert only"
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "Insert only" по сравнению с  оптимальной нагрузкой.
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "Insert only" по сравнению с оптимальной нагрузкой.

Увеличение медианного времени выполнения тестового запроса по сценарию "Insert only " свыше 50% начинается после общей нагрузки 37 соединений.

Медианное время выполнения сценария "CPU Load"

Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "CPU  Load"
Ось X - нагрузка на СУБД. Ось Y - медианное время выполнения тестового запроса по сценарию "CPU Load"
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "CPU Load" по сравнению с  оптимальной нагрузкой.
Ось X - нагрузка на СУБД. Ось Y - относительное увеличение медианного время выполнения тестового запроса по сценарию "CPU Load" по сравнению с оптимальной нагрузкой.

Увеличение медианного времени выполнения тестового запроса по сценарию "CPU Load " свыше 50% - не наблюдается.

2. Для оценки корреляции и характерных ожидания выполнения тестовых запросов - используется Сценарий-6:

Операционная скорость по нагрузке на СУБД

Ось X - нагрузка на СУБД. Ось Y - операционная скорость СУБД.
Ось X - нагрузка на СУБД. Ось Y - операционная скорость СУБД.

Максимальная скорость достигается при общей нагрузке = 18 соединений.

Операционная скорость и ожидания в ходе нагрузочного тестирования

Ось X - точка наблюдения. Ось Y - операционная скорость СУБД.
Ось X - точка наблюдения. Ось Y - операционная скорость СУБД.
Ось X - точка наблюдения. Ось Y - ожидания СУБД.
Ось X - точка наблюдения. Ось Y - ожидания СУБД.
Ось X - точка наблюдения. Ось Y - ожидания СУБД типа Lock.
Ось X - точка наблюдения. Ось Y - ожидания СУБД типа Lock.
Ось X - точка наблюдения. Ось Y - ожидания СУБД типа LWLock.
Ось X - точка наблюдения. Ось Y - ожидания СУБД типа LWLock.

Ожидания и корреляция по ожиданиям СУБД

-31
Показатели операционной скорости и корреляции по ожиданиям СУБД
Показатели операционной скорости и корреляции по ожиданиям СУБД