Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Postgresql + Производительность

С этим тегом используют

Субд Мониторинг Тестирование Программирование Нейронные сети IT Компьютер Игры Видеокарта Производство Все
54 поста сначала свежее
2
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Корреляционный анализ ожиданий СУБД PostgreSQL - поиск проблемных SQL запросов при продуктивной нагрузке⁠⁠

Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).

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

Работа DBA в чем то , очень отдаленно, напоминает работу хирурга.

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

Проанализировать причины снижения скорости СУБД и найти проблемные запросы

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

Дашбоард мониторинга производительности СУБД

Операционная скорость СУБД - снижается.

Ожидания СУБД - растут.

Порядок проведения корреляционного анализа

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

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

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

Ожидания на уровне кластера

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

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

Корреляционный анализ на уровне кластера

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

Таблица коэффициентов корреляции

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

  2. Тип ожидания имеющий наибольшую корреляция с общим количеством ожиданий - IO.

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

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

Статистика выполнений и ожиданий по отдельным SQL запросам по типу ожидания IO

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

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

Столбцы таблицы

  • QUERYID : id SQL запроса

  • CORRELATION : коэффициент корреляции между ожиданиями типа IO по всем SQL запросам и ожиданиям типа IO по конкретному запросу.

  • CALLS : общее количество выполнений запроса за анализируемый период.

  • WAITINGS : Ожидания типа IO по конкретному запросу.

  • WAITINGS TO CALL : Отношение количество ожиданий к количество выполнений. Среднее количество ожидания за одно выполнение.

Таблица отсортирована по столбцам QUERYID / WAITINGS TO CALL .

Статистика выполнений и ожиданий по выбранным SQL-запросам

-7843470278038126227

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

Статистика выполнений и ожиданий для queryid =-7843470278038126227

События ожидания:

  • DataFilePrefetch: Ожидание асинхронной предвыборки из файла данных отношения.

  • DataFileRead : Ожидание чтения из файла данных отношения.

  • DataFileWrite : Ожидание записи в файл данных отношения.

  • WALSync : Ожидание помещения файла WAL в надёжное хранилище.

  • WALWrite : Ожидание записи в файл WAL.

Результат анализа по запросу -7843470278038126227:

Выполнение процедуры ANALYZE во время продуктивной нагрузки на СУБД приводит к ожиданиям. Необходимо пересмотреть порядок проведения регламентных работ на СУБД.

-8198400089192679786

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

Статистика выполнений и ожиданий для queryid =-8198400089192679786

События ожидания:

  • DataFileRead : Ожидание чтения из файла данных отношения.

Результат анализа по запросу -8198400089192679786

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

Итог

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

Показать полностью 9
[моё] Субд Postgresql Производительность Корреляция Длиннопост
0
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия ITшное

Анализ или Синтез ?⁠⁠

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

Причина

Влияние части системы, на систему в целом , может быть несущественным и несоразмерным затраченным ресурсам.

Анализ или Синтез ? Субд, Postgresql, Анализ, Синтез, Гипотеза, Оптимизация, Производительность, Текст
[моё] Субд Postgresql Анализ Синтез Гипотеза Оптимизация Производительность Текст
5
0
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

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

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

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

Результат известен заранее. Но детали , могут быть интересны.

Задача эксперимента

Определить характерные события ожиданий СУБД вызванные отсутствием индекса в таблице.

Характер нагрузки

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

Сценарий "OLTP" - SELECT + UPDATE.

1)UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;

2)SELECT abalance FROM pgbench_accounts WHERE aid = :aid;

3)UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;

4) UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;

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

При проведении сравнительного эксперимента ,таблица pgbench_accounts создается без ограничения первичного ключа.

Версия СУБД и ресурсы ВМ

Postgres Pro (enterprise certified) 15.8.1 on x86_64-pc-linux-gnu, compiled by gcc (AstraLinuxSE 8.3.0-6) 8.3.0, 64-bit

Operating System: Astra Linux

Kernel: Linux 6.1.90-1-generic

processor  : 0

  • model name  : Intel Xeon Processor (Skylake, IBRS, no TSX)

  • cpu MHz  : 2693.670

  • cpu cores  : 1

processor  : 1

  • model name  : Intel Xeon Processor (Skylake, IBRS, no TSX)

  • cpu MHz  : 2693.670

  • cpu cores  : 1

RAM: 1GB

Словарь терминов, используемых при анализе

https://dzen.ru/a/Z7h6qwE1CT3q-E73?share_to=link

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

https://dzen.ru/a/Z7gXkYKsy2syEMGG?share_to=link

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

Статистические показатели операционной скорости.

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

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

График операционной скорости при использовании индекса.

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

График операционной скорости без использования индекса.

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

  1. Без индекса скорость существенно ниже

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

Ожидания

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

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

График количества ожиданий при использовании индекса

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

График количества ожиданий без использования индекса

Сравнительный анализ ожиданий

  1. Характер графика практически не изменился

  2. Абсолютные значение количества ожиданий без использования индекса незначительно ниже.

WAITING RATIO

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

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

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

График относительной доли ожиданий при использовании индекса.

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

График относительной доли ожиданий без использования индекса.

Сравнительный анализ относительной доли ожиданий

  1. Характер графика практически не изменился

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

Минимальные и максимальные количества ожиданий при использовании индекса

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

Минимальные и максимальные количества ожиданий без использования индекса

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

Анализ WAIT_EVENT_TYPE

  1. Характер ожидания , при проведении нагрузочного тестирования без использования индексов принципиально изменился.

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

Ожидания Lock

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

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

График количество ожидания при использовании индекса.

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

График количество ожидания без использования индекса.

Ожидания LWLock

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

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

График количество ожидания при использовании индекса.

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

График количество ожидания без использования индекса.

Сравнительный анализ ожиданий Lock , LWLock

  1. Характер графиков и количества ожиданий практически не изменились и не зависят от отсутствия индекса.

Ожидания IO

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

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

График количество ожидания без использования индекса.

Ожидания IPC

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

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

График количество ожидания без использования индекса.

Сравнительный общий корреляционный анализ ожиданий

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

https://dzen.ru/a/Z6zzzMzWGmYuR-bG?share_to=link

Корреляция операционной скорости и ожиданий и событий ожидания при использовании индекса

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

Корреляция операционной скорости и ожиданий и событий ожидания без использовании индекса

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

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

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

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

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

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

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

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

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

Сравнительный анализ корреляций

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

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

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

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

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

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

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

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

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

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

  6. LWLock / WALWrite: Ожидание при записи буферов WAL на диск.

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

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

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

  1. IO / RelationMapSync Ожидание помещения файла отображений отношений в надёжное хранилище.

  2. IO / DSMFillZeroWrite Ожидание заполнения нулями файла, применяемого для поддержки динамической общей памяти.

  3. IO / DataFileRead Ожидание чтения из файла данных отношения.

  4. IO / DataFileImmediateSync Ожидание немедленной синхронизации файла данных отношения с надёжным хранилищем.

  5. IPC / BufferIO Ожидание завершения буферного ввода/вывода.

  6. IPC / ParallelFinish Ожидание завершения вычислений параллельными рабочими процессами.

  7. IPC / BgWorkerShutdown Ожидание завершения фонового рабочего процесса.

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

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

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

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

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

  13. LWLock / SyncScan Ожидание при выборе начального положения для синхронизированного сканирования таблицы.

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

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

При использовании индекса

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

Без использования индекса

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

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

С использованием индекса

select custom_test( $1 )

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

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

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

Без использования индекса

select custom_test( $1 )

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

  1. IO / DSMFillZeroWrite Ожидание заполнения нулями файла, применяемого для поддержки динамической общей памяти.

  2. IO / DataFileRead Ожидание чтения из файла данных отношения.

  3. IPC / BufferIO Ожидание завершения буферного ввода/вывода.

  4. IPC / ParallelFinish Ожидание завершения вычислений параллельными рабочими процессами.

  5. IPC / BgWorkerShutdown Ожидание завершения фонового рабочего процесса.

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

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

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

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

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

  11. LWLock / SyncScan Ожидание при выборе начального положения для синхронизированного сканирования таблицы.

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

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

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

  2. Корреляция с ожиданиями IO и IPC - с высокой долей уверенности , свидетельствует о неоптимальном плане выполнения SQL запроса.

Показать полностью 23
[моё] Субд Postgresql Производительность Корреляция Тестирование Длиннопост
0
kznalp
kznalp
4 месяца назад
Postgres DBA
Серия СУБД 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 Исследования Производительность Корреляция Анализ данных
0
kznalp
kznalp
4 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Корреляционный анализ ожиданий СУБД 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 Производительность Статистика Корреляция Длиннопост
0
kznalp
kznalp
4 месяца назад
Мнения
Серия IMHO

Мысли вслух - о раскрытии информации⁠⁠

Когда еще в прошлом году начал заниматься темой статистического анализа производительности СУБД , очень удивлялся - почему в интернете нет никакой информации . Куча статей , докладов о оптимизации производительности , но при этом простой вопрос "а что вы понимаете под производительностью и как считаете метрику?" - ставит докладчика в тупик(проверено практически).
Чуть поглубже погрузившись в тему , поначалу даже опасался - ах, конкуренты прочитают, реализуют, перехватят идею , реализуют и выдадут продукт на рынок .
Но, по прошествии времени , понял , что ситуация чуть другая.
1) PostgreSQL это все таки открытая система , знаниями надо делиться. Сегодня ты помог, завтра тебе помогут.
2) Тема статистического анализа производительности СУБД и вообще понятие "производительность СУБД" по большому счету никому и не интересна. На Хабре именно за эти статьи сливали карму , в комментах там в основном ламеры и тролли, за все время на Хабре было 1-2 собеседника , и полезное обсуждение. На дзене комментариев к статьям 0(ноль).
И самое главное , со стороны бизнеса тема "performance engineering" в общем , то не сильно востребована, они просто ресурсами заливают. Для коллег DBA - вся эта статистика, корреляция, дисперсия и разные медианы - тарабарщина какая то - 'а зачем это все надо ", лучше смотреть кучу графиков и лапшу клиенту вешать.

Так, что можно , не переживать - в ближайшее время конкурентов не предвидится. Хотя , с другой стороны скучно - "Ганди умер - поговорить не с кем".

Но, все таки , может по привычке , а может лень описывать долго и строго математически - не привожу детали и последовательность действий , только результаты . Т.е. в интернете описано "что" получилось в результате экспериментов , "как" этот получено , информации общем то нет. Поэтому спрашивать у языковых моделей вопросы по статистическому анализу производительности СУБД не имеет смысла - они начинают воду лить и пургу нести. Хотя прикольно , такие бюджеты и ресурсы , а на выходе пук. Кто хочет, пусть называет это "интеллектом".
Вот такие мысли , с утра , в субботу.

Мысли вслух - о раскрытии информации ИМХО, Субд, Postgresql, Производительность
Показать полностью 1
[моё] ИМХО Субд Postgresql Производительность
22
kznalp
kznalp
4 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Анализ результатов нагрузочного тестирования СУБД 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
[моё] Субд Postgresql Производительность Мониторинг Анализ данных Корреляция Длиннопост
1
kznalp
kznalp
4 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Сценарий "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
[моё] Субд Postgresql Производительность Корреляция Мониторинг Анализ данных Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии