Серия «СУБД PostgreSQL»

Корреляционный анализ ожиданий для сценариев нагрузочного тестирования СУБД PostgreSQL

Взято с основного технического канала Postgres DBA

Корреляционный анализ ожиданий для сценариев нагрузочного тестирования СУБД PostgreSQL Субд, Postgresql, Исследования, Производительность, Корреляция, Анализ данных

Анализировать и сравнивать можно только вычисляемые сущности.

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

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

Database-1

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

Database-2

Тестовая база данных для проведения нагрузочного тестирования .

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

Рост количества подключений pgbench - экспоненциально от 6 до 111.

Сценарии нагрузочного тестирования и результаты экспериментов

Сценарий 1 - "Select Only"

Только читающая нагрузка на тестовую БД .

Сценарий 2 - "Insert Only"

Только пишущая нагрузка на тестовую БД .

Сценарий 3 - "OLTP"

Имитация теста TPC-B . Нагрузка "SELECT + UPDATE" в тестовой БД .

Характерные признаки сценариев нагрузочного тестирования

Сценарий 1 - "Select Only"

Сценарий характеризуется

1. Cильной корреляцией с событиями ожидания:

  • LWLock/LockManager: Ожидание при чтении или изменении информации о «тяжёлых» блокировках.

  • LWLock/ProcArray: Ожидание при обращении к общим структурам данных в рамках процесса (например, при получении снимка или чтении идентификатора транзакции в сеансе).

2. Очень низким относительной долей ожиданий: менее 1%

Сценарий 2 - "Insert Only"

Сценарий характеризуется

1. Очень сильной корреляцией с событиями ожидания:

  • MultiXactOffsetSLRU: Ожидание при обращении к SLRU-кешу данных о смещениях мультитранзакций.

2. Не высокой относительной долей ожиданий: 17-35%

Сценарий 3 - "OLTP"

Сценарий характеризуется

1. Очень сильной корреляцией с событиями ожидания:

  • Lock / transactionid: Ожидание завершения транзакции.

  • Lock / tuple: Ожидание при запросе блокировки для кортежа.

2. Высокой относительной долей ожиданий: 62-95%.

Показать полностью

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL"

Взято с основного технического канала Postgres DBA

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Классический анализ - разбить проблему на составные части и внимательно изучить.

Продолжение работ по теме

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

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

Анализ событий ожиданий СУБД и определение SQL запросов оказывающих наибольшее влияние на производительность БД.

Основное отличие от предыдущей методики анализа производительности.

Корреляционный анализ проводится не по СУБД в целом , а по отдельным базам данных - Database-1 , Database-2.

Статистические показатели производительности Баз Данных.

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Анализ операционной скорости

Деградация производительности Database-2 существенно сильнее .

Ожидания

WAITING RATIO

Относительная доля(%), времени ожиданий от времени работы базы данных.

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Анализ относительной доли ожиданий

Доля ожиданий , при работе Database-2 выше на порядки.

WAIT_EVENT_TYPE (Типы ожиданий)

Database-1

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Наиболее значимый тип ожидания LWLock

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Database-2

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Наиболее значимые типы ожиданий IO , Lock , LWLock.

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

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

Анализ типов ожиданий (WAIT_EVENT_TYPE)

Относительная доля ожиданий для Database-1 существенно ниже , чем по Database-2.

Типы ожиданий IO , Lock - отсутствуют при работе Database-1.

Общий корреляционный анализ ожиданий

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Коэффициенты корреляции


  • SPEED CORR
    : коэффициент корреляции между количеством активных сессий к БД и операционной скоростью.

  • BUFFERPIN CORR: коэффициент корреляции между операционной скоростью и количеством ожиданий типа Bufferpin.

  • EXTENSION CORR: коэффициент корреляции между операционной скоростью и количеством ожиданий типа Extension.

  • IO CORR: коэффициент корреляции между операционной скоростью и количеством ожиданий типа IO.

  • IPC CORR: коэффициент корреляции между операционной скоростью и количеством ожиданий типа IPC.

  • LOCK CORR: коэффициент корреляции между операционной скоростью и количеством ожиданий типа Lock.

  • LWLOCK CORR: коэффициент корреляции между операционной скоростью и количеством ожиданий типа LWLock.

Итоги

  1. Корреляция между активными сессиями и операционной скоростью для Database-1 очень слабая => Увеличение нагрузки на БД практически не ведет к снижению производительности БД.

  2. Корреляция между активными сессиями и операционной скоростью для Database-2 очень сильная =>Увеличение нагрузки на БД ведет к заметному снижению производительности БД.

  3. Для Database-1 отсутствует корреляция между операционной скоростью и ожиданиями => Снижение производительности БД не вызвано ожиданиями БД.

  4. Для Database-2 наиболее сильная отрицательная корреляция между операционной скоростью и ожиданиями типа Lock =>Тяжелые блокировки оказывают наибольшее влияние на снижение производительности СУБД.

Корреляционный анализ ожиданий для Database-2

Для проведения корреляционного анализа используется

Основная гипотеза корреляционного анализа ожиданий СУБД

Корреляция между типом ожидания (wait_event_type) и событием ожидания(wait_event)

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Наиболее коррелированные события ожидания(сильная корреляция):

  1. Lock/extend: Ожидание при расширении отношения.

  2. LWLock/BufferContent: Ожидание при обращении к странице данных в памяти.

Корреляция между событием ожидания(wait_event) и SQL запросами

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

SQL запросы , роли и корреляция с событиями ожиданияSQL запросы , роли и корреляция с событиями ожидания

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Список SQL запросов

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

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

Пользовательский запрос и события ожидания оказывающий наибольшее влияние на снижение производительности БД.

select custom_test( $1 )

События ожидания, оказывающие наибольшее влияние на снижение производительности БД

Корреляционный анализ ожиданий СУБД PostgreSQL с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Статистика, Корреляция, Длиннопост

Коэффициенты корреляции между событиями ожидания в БД и SQL запросе.

  1. MultiXactOffsetSLRU: Ожидание при обращении к SLRU-кешу данных о смещениях мультитранзакций.

  2. MultiXactGen: Ожидание при чтении или изменении общего состояния мультитранзакций.

  3. extend: Ожидание при расширении отношения.

  4. BufferContent: Ожидание при обращении к странице данных в памяти.

  5. WALInsert: Ожидание при добавлении записей WAL в буфер в памяти.

  6. ProcArray: Ожидание при обращении к общим структурам данных в рамках процесса (например, при получении снимка или чтении идентификатора транзакции в сеансе).

  7. CheckpointerComm: Ожидание при управлении запросами fsync.

  8. BufferMapping: Ожидание при связывании блока данных с буфером в пуле буферов.

  9. DataFileExtend: Ожидание расширения файла данных отношения.

  10. LockManager: Ожидание при чтении или изменении информации о «тяжёлых» блокировках.

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

Для оптимизации и повышению производительности запроса "select custom_test( $1 )" необходимо выявить причины и оптимизировать работу с мультитранзакциями.

Планы на будущее и развитие

Корреляционный анализ событий ожидания СУБД в зависимости от сценариев нагрузочного тестирования.

Показать полностью 15

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL"

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

А теперь начинается самое интересно - анализ и поиск закономерностей

Выполненные сценарии нагрузочного тестирования

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

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

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

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

Результаты нагрузочного тестирования

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

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

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

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

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

Ключевой момент

  1. Значения операционной скорости после определенного роста нагрузки для сценариев "INSERT ONLY" / "HEAVYWEIGHT".

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

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

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

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

Анализ результатов нагрузочного тестирования СУБД PostgreSQL с использованием разных сценариев оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Мониторинг, Анализ данных, Корреляция, Длиннопост

Ключевой момент

  1. График скользящей корреляции для сценариев "SELECT ONLY" / "INSERT ONLY" очень похожи.

  2. График скользящей корреляции для сценария "HEAVYWEIGHT" в противо фазе с графиками "SELECT ONLY" / "INSERT ONLY" после определенной нагрузки.

Показать полностью 9

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL"

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Корреляция, Мониторинг, Анализ данных, Длиннопост

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

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

Сценарий нагрузки "INSERT ONLY".

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

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

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

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

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

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

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Корреляция, Мониторинг, Анализ данных, Длиннопост

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

Отличительная особенность сценария "INSERT ONLY" - резкий скачок операционной скорости. Скорее всего причина - изменение нагрузки на СХД виртуальной машины.

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

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Корреляция, Мониторинг, Анализ данных, Длиннопост

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

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

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

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Корреляция, Мониторинг, Анализ данных, Длиннопост

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

Обращает на себя внимание факт непостоянного значения скользящей корреляции, близкой к косинусоиде.

График практически повторяет график скользящей корреляции для сценария "SELECT ONLY"

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Корреляция, Мониторинг, Анализ данных, Длиннопост

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

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

Сильная положительная корреляция между операционной скоростью и нагрузкой на СУБД .

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

Гипотеза

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

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

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

Сценарий "INSERT ONLY" - корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Субд, Postgresql, Производительность, Корреляция, Мониторинг, Анализ данных, Длиннопост

Нет деградации производительности СУБД за период проведения теста .

Итог

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

  2. Для сценарий "INSERT ONLY" текущая нагрузка далека от предельной.

Показать полностью 6

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY"

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

Сценарий нагрузки "SELECT ONLY".

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

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

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

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

  • 1-40: положительная корреляция

  • 41-142: отрицательная корреляция

  • 143-179: положительная корреляция

  • 180-197: отрицательная корреляция

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

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

  1. Начиная с точки 56 - резкий рост метрик ожиданий СУБД

  2. Количество ожиданий СУБД - очень не велико.

  3. После точки 81 - относительная доля ожиданий снижается. Однако количество ожиданий не уменьшается , операционная скорость снижается.

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

Гипотеза

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

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

Основная гипотеза корреляционного анализа ожиданий СУБД

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

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

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

Снижение операционной скорости вызвано повышенной нагрузкой на СУБД и нехваткой CPU. Ожиданий СУБД влияющих на производительность - не выявлено.

Подтверждением нехватки ресурсов СУБД является рост значений benchmark.

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" - сценарий "SELECT ONLY" Субд, Postgresql, Производительность, Мониторинг, Длиннопост

Ось X - точка наблюдения. Ось Y - медианное значение тестового запроса BENCHMARK

Итог

Используя методику статистического анализа производительности СУБД можно установить предельное значение читающей нагрузки на СУБД не вызывающее деградацию производительности.

Показать полностью 8

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL"

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

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

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

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

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

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

  • 1-19 : коэфaициент близок к 1

  • 23 - отрицательное значение коэффициента корреляции

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

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

  • Очень слабая корреляция: [0 до 0.2]

  • Слабая корреляция: (0.2 до 0.5].

  • ️Средняя корреляция: (0.5 до 0.7] .

  • ️Сильная корреляция: (0.7 до 0.9].

  • ️Очень сильная корреляция: (0.9 до 1].

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

  1. После точки наблюдения 23 - СУБД работает в нештатном режиме.

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

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

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

Гипотеза

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

Наибольшее влияние на снижение производительности СУБД оказывает 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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

  1. transactionid = 0,999996784494388

  2. tuple = 0,989898319693633

  3. relation = 0,884541891919045

Ожидания transactionid

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

Ожидания tuple

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

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

queryid = -3703375232510669542

Корреляционный анализ производительности СУБД с использованием оперативно-тактического комплекса "PG_HAZEL" Postgresql, Субд, Мониторинг, Производительность, Анализ данных, Корреляция, Длиннопост

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

Итоги

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

Необходимо продолжение проведение экспериментов по корреляционному анализу :

  1. Дополнительные сценарии нагрузочного тестирования .

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

Показать полностью 10

Использование методов анализа и синтеза для оптимизации производительности СУБД

Как известно, существует всего два метода для решения задач:

Метод анализа или метод дедукции, или от общего к частному.

Метод синтеза или метод индукции, или от частного к общему.

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

Пример аналитического метода :
Корреляционный анализ для определения причин деградации производительности СУБД PostgreSQL

Пример синтетического метода :
Как поймать и обезвредить проблемные запросы в PostgreSQL

Проблема аналитического метода : сложность и недостаточная проработка методологий - отсутствие однозначного определения понятия "производительность" .

Проблема синтетического метода : возможное влияние локального изменения на СУБД в целом. Классический пример - создание индекса увеличивает скорость чтения , но может замедлить скорость вставки данных.

Общая проблема : отсутствие строгой методики оценки результатов проведённых изменений .

PG_HAZEL - статистический анализ производительности СУБД : корреляция ожиданий

Взято с основного технического канала Postgres DBA

Начало и общее описание

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

Задача

Определение ожидания СУБД, оказывающего наибольшее влияние на производительность СУБД .

Эксперимент

Нагрузочное тестирование с использованием инструментария pg_stat_tester (Сценарий 2 : OLTP).

Анализируемые данные - коэффициент корреляции между операционной скоростью и ожиданиями СУБД .

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

Коэффициент корреляции между операционной скоростью и количеством ожиданий(все ожидания) .

PG_HAZEL - статистический анализ производительности СУБД : корреляция ожиданий Субд, Postgresql, Мониторинг, Производительность, Статистика, Анализ данных, Длиннопост

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

Вполне ожидаемый результат - с ростом нагрузки коэффициент растет по модулю . Т.е. чем больше ожиданий, тем ниже операционная скорость.

Коэффициент корреляции между операционной скоростью и ожиданиями типа "Lock".

PG_HAZEL - статистический анализ производительности СУБД : корреляция ожиданий Субд, Postgresql, Мониторинг, Производительность, Статистика, Анализ данных, Длиннопост

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

Коэффициент корреляции между операционной скоростью и ожиданиями типа "LWLock".

PG_HAZEL - статистический анализ производительности СУБД : корреляция ожиданий Субд, Postgresql, Мониторинг, Производительность, Статистика, Анализ данных, Длиннопост

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

Корреляционный анализ

Графический анализ.

График коэффициента корреляции по ожиданию "Lock" более ближе к графику по ожиданиям , чем график коэффициента корреляции по ожиданию "LWLock" .

PG_HAZEL - статистический анализ производительности СУБД : корреляция ожиданий Субд, Postgresql, Мониторинг, Производительность, Статистика, Анализ данных, Длиннопост

Ось Y - все ожидания(синий), ожидания "Lock"(красный). Ось X - точка наблюдения.

PG_HAZEL - статистический анализ производительности СУБД : корреляция ожиданий Субд, Postgresql, Мониторинг, Производительность, Статистика, Анализ данных, Длиннопост

Ось Y - все ожидания(синий), ожидания "LWLock"(красный). Ось X - точка наблюдения.

Статистический анализ

Значение стандартного отклонения разницы значений по всем ожиданиями и ожиданиям "Lock" = 0,08560839

Значение стандартного отклонения разницы значений по всем ожиданиями и ожиданиям "LWLock" = 0,339815

Значение стандартного отклонения для ожидания "Lock" ниже значения стандартного отклонения для ожидания "LWLock".

Итог

Для данного сценария нагрузки - ожидания типа "Lock" оказывают существенно большее влияние на снижение производительности, по сравнению с ожиданиями типа "LWLock".

Показать полностью 5
Отличная работа, все прочитано!