Оптимизировать и менять настройки СУБД можно до бесконечности. Нет предела совершенству!
Задача
Определить качественное и количественное влияние на производительность тестовой СУБД изменения параметра checkpoint_timeout для сценария нагрузки "Mix".
- Начальное значение checkpoint_timepout = 900 (15 минут)
- Тестовое значение checkpoint_timepout = 300 (5 минут).
Тестовый сценарий "Mix"
checkpoint_timeout (integer)
Максимальное время между автоматическими контрольными точками в WAL. Если это значение задаётся без единиц измерения, оно считается заданным в секундах. Допускаются значения от 30 секунд до одного дня. Значение по умолчанию — пять минут (5min).
Сравнительные эксперименты
Эксперимент-1 : checkpoint_timepout = 900 (15 минут).
Эксперимент-2 : checkpoint_timepout = 300 (5 минут).
Операционная скорость
Эксперимент-1
Ось X - общая нагрузка на СУБД. Ось Y - операционная скорость.
Эксперимент-2
Ось X - общая нагрузка на СУБД. Ось Y - операционная скорость.
Сравнительные графики
Ось X - общая нагрузка на СУБД. Ось Y - операционная скорость.
Ось X - общая нагрузка на СУБД. Ось Y - относительная разница операционной скорости
Результат
- При низкой нагрузка на СУБД - разница изменения скорости - несущественная.
- С ростом общей нагрузки с 18 до 31 снижение значения checkpoint_timepout приводит к росту производительности СУБД до 6%
- Дальнейший рост нагрузки приводит к уменьшению относительной разницы в скорости и после общего количества соединений ~60, разница достигает -9%.
Ожидания СУБД
Эксперимент-1
Ось X - тип ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возник данный тип ожидания.
Ось X - событие ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возникло данное событие ожидания.
Эксперимент-2
Ось X - тип ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возник данный тип ожидания.
Ось X - событие ожидания. Ось Y - количество и относительная SQL запросов, при выполнении которых возникло данное событие ожидания.
Сравнительные данные
Сравнительная таблица по событиям ожиданий и количеству SQL запросов, при выполнении которых возникает событие ожидания.
Результаты
Последствия уменьшение значения checkpoint_timeout :
- Снижение количества SQL выражений , при выполнении которых возникает событие ожидания DataFileExtend на 21%
- При значении параметра checkpoint_timeout = 300, отсутствуют события ожиданий : DataFileWrite, DataFileImmediateSync, RelationMapSync , BufferMapping , CheckpointerComm, XactSLRU.
Итоги
Для данной СУБД , при сценарии нагрузки "Mix", изменение значения конфигурационного параметра checkpoint_timepout в 3 раза с 900 до 300 , приводит к следующим результатам:
- При низкой общей нагрузке до 15 соединений уменьшение скорости менее 2%.
- При средней общей нагрузке 18-31 соединение, увеличение скорости при checkpoint_timeout = 300 растет до 6%.
- С ростом нагрузки до 53 соединений разница в скорости между checkpoint_timepout=900 и checkpoint_timepout = 300 уменьшается до 0 .
- С ростом нагрузки свыше 64 соединений, при checkpoint_timepout=300 СУБД замедляется до 10%.
Ось X - общая нагрузка на СУБД. Ось Y - относительная разница операционной скорости для СУБД checkpoint_timeout = 900 и checkpoint_timeout = 300.