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

"OLTP"- нагрузочное тестирование СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL".

Оглавление

Архивный материал. Используемый метод:

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

Анализ и определение причины деградации производительности СУБД за заданный период.

Сценарий нагрузки TPC-B (OLTP).

Общее описание схемы и метрик производительности

PG_HAZEL - оперативно-тактический комплекс мониторинга производительности СУБД PostgreSQL .

Анализ метрик производительности СУБД.

График операционной скорости СУБД за период

Короткий период медианного сглаживания - синий график.

Долгий период медианного сглаживания - красный график.

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

Как видно из графика - имеется краткосрочная и долгосрочная тенденция снижения производительности СУБД.

Сессии в состоянии 'active'

Ось X - точка наблюдения. Ось Y - количество активных сессий на точку времени.
Ось X - точка наблюдения. Ось Y - количество активных сессий на точку времени.

Корреляция между операционной скоростью и количество сессий в состоянии 'active'

График скользящей корреляции.

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

Коэффициент корреляции между операционной скоростью и количеством активных сессий за период наблюдений = -0,993357128393598 .

Ключевые точки наблюдения.

  • 1-19 : коэффициент близок к 1
  • 23 - отрицательное значение коэффициента корреляции
  • 80 - значение коэффициента корреляции уменьшается(растет по модулю)

Общая интерпретация значений коэффициента корреляции :

  • Очень слабая корреляция: [0 до 0.2]
  • Слабая корреляция: (0.2 до 0.5].
  • ️Средняя корреляция: (0.5 до 0.7] .
  • ️Сильная корреляция: (0.7 до 0.9].
  • ️Очень сильная корреляция: (0.9 до 1].

Результат корреляционного анализа операционной скорости и активными сессиями :

  1. После точки наблюдения 23 - СУБД работает в нештатном режиме.
  2. Очень сильная корреляция между нагрузкой на СУБД и операционной скоростью СУБД.

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

Отношение времени ожидания к общему времени работы СУБД

Ось X - точка наблюдения. Ось Y - % ожиданий
Ось X - точка наблюдения. Ось Y - % ожиданий

Результат анализа ожиданий СУБД:

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

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

Гипотеза

Для определения SQL запроса оказывающего наибольшее влияние необходимо определить запрос с наибольшим значением коэффициента корреляции между ожиданиями СУБД и ожиданиями по SQL запросу.

Чуть подробнее

Результат корреляционного анализа

Результат работы сервисного скрипта
Результат работы сервисного скрипта

Наибольшее влияние на снижение производительности СУБД оказывает SQL запрос: queryid = -3703375232510669542 .

Шаги корреляционного анализа

1. Корреляция между операционной скоростью и определенными типом ожиданиям

  1. Lock = -0,991080979500333
  2. LWLock = -0,952840750047627
  3. IPC = -0,00747093318897355
  4. BufferPin = 0
  5. Extension = 0
  6. IO = 0

Ожидания типа Lock имеет большую корреляцию по сравнению с ожиданиями типа LWLock.

Ожидания типа Lock

Ось X - точка наблюдения. Ось Y - количество ожиданий типа Lock
Ось X - точка наблюдения. Ось Y - количество ожиданий типа Lock

Ожидания типа LWLock

Ось X - точка наблюдения. Ось Y - количество ожиданий типа LWLock
Ось X - точка наблюдения. Ось Y - количество ожиданий типа LWLock

2.Корреляция между типом ожидания Lock и событиями ожиданий

  1. transactionid = 0,999996784494388
  2. tuple = 0,989898319693633
  3. relation = 0,884541891919045

Ожидания transactionid

Ось X - точка наблюдения. Ось Y - количество ожиданий transactionid
Ось X - точка наблюдения. Ось Y - количество ожиданий transactionid

Ожидания tuple

Ось X - точка наблюдения. Ось Y - количество ожиданий tuple
Ось X - точка наблюдения. Ось Y - количество ожиданий tuple

3. Корреляция между ожиданиями transactionid и SQL запросами

queryid = -3703375232510669542

Ось Y - количество ожиданий Lock/tuple для queryid =-3703375232510669542
Ось Y - количество ожиданий Lock/tuple для queryid =-3703375232510669542

Итоги

Гипотеза подтверждена экспериментально для данного сценария нагрузки.

Методику корреляционного анализа можно применить и на уровне SQL запроса , для анализа снижения производительности .

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