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

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

Оглавление
Оптимизировать и менять настройки СУБД можно до бесконечности. Нет предела совершенству!
Оптимизировать и менять настройки СУБД можно до бесконечности. Нет предела совершенству!

Задача

Определить качественное и количественное влияние на производительность тестовой СУБД изменения параметра checkpoint_timeout для сценария нагрузки "Mix".

  • Начальное значение checkpoint_timepout = 900 (15 минут)
  • Тестовое значение checkpoint_timepout = 300 (5 минут).

Тестовый сценарий "Mix"

checkpoint_timeout (integer)
Максимальное время между автоматическими контрольными точками в WAL. Если это значение задаётся без единиц измерения, оно считается заданным в секундах. Допускаются значения от 30 секунд до одного дня. Значение по умолчанию — пять минут (5min).
Postgres Pro Enterprise : Документация: 15: 19.5. Журнал предзаписи

Сравнительные эксперименты

Эксперимент-1 : checkpoint_timepout = 900 (15 минут).

Эксперимент-2 : checkpoint_timepout = 300 (5 минут).

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

Эксперимент-1

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

Эксперимент-2

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

Сравнительные графики

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

Результат

  1. При низкой нагрузка на СУБД - разница изменения скорости - несущественная.
  2. С ростом общей нагрузки с 18 до 31 снижение значения checkpoint_timepout приводит к росту производительности СУБД до 6%
  3. Дальнейший рост нагрузки приводит к уменьшению относительной разницы в скорости и после общего количества соединений ~60, разница достигает -9%.

Ожидания СУБД

Эксперимент-1

Ось X - тип ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возник данный тип ожидания.
Ось X - тип ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возник данный тип ожидания.
Ось X - событие ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возникло данное событие ожидания.
Ось X - событие ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возникло данное событие ожидания.

Эксперимент-2

Ось X - тип ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возник данный тип ожидания.
Ось X - тип ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возник данный тип ожидания.
Ось X - событие ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возникло данное событие ожидания.
Ось X - событие ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возникло данное событие ожидания.

Сравнительные данные

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

Результаты

Последствия уменьшение значения checkpoint_timeout :

  1. Снижение количества SQL выражений , при выполнении которых возникает событие ожидания DataFileExtend на 21%
  2. При значении параметра checkpoint_timeout = 300, отсутствуют события ожиданий : DataFileWrite, DataFileImmediateSync, RelationMapSync , BufferMapping , CheckpointerComm, XactSLRU.

Итоги

Для данной СУБД , при сценарии нагрузки "Mix", изменение значения конфигурационного параметра checkpoint_timepout в 3 раза с 900 до 300 , приводит к следующим результатам:

  1. При низкой общей нагрузке до 15 соединений уменьшение скорости менее 2%.
  2. При средней общей нагрузке 18-31 соединение, увеличение скорости при checkpoint_timeout = 300 растет до 6%.
  3. С ростом нагрузки до 53 соединений разница в скорости между checkpoint_timepout=900 и checkpoint_timepout = 300 уменьшается до 0 .
  4. С ростом нагрузки свыше 64 соединений, при checkpoint_timepout=300 СУБД замедляется до 10%.
Ось X - общая нагрузка на СУБД. Ось Y - относительная разница операционной скорости для СУБД checkpoint_timeout = 900 и checkpoint_timeout = 300.
Ось X - общая нагрузка на СУБД. Ось Y - относительная разница операционной скорости для СУБД checkpoint_timeout = 900 и checkpoint_timeout = 300.