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

Расслабьтесь и отдохните: игра без ограничений по времени.

Проверьте свою смекалку: головоломка для любителей

Блоки Судоку - расслабляющая головоломка

Головоломки, Гиперказуальные, Мобильная

Играть

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

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

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

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

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

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

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

Postgresql + Мониторинг

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

Субд Производительность Тестирование Программирование Нейронные сети IT Работа Политика Технологии Все
38 постов сначала свежее
kznalp
kznalp
1 месяц назад
Postgres DBA
Серия СУБД PostgreSQL

PG_HAZEL : Влияние checkpoint_timeout на производительность/скорость СУБД PostgreSQL - итог⁠⁠

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

PG_HAZEL : Влияние checkpoint_timeout на производительность/скорость СУБД PostgreSQL - итог Субд, Postgresql, Мониторинг, Производительность, Исследования, Длиннопост

Для лучшей скорости необходима настройка под конкретные условия трассы .

Задача

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

checkpoint_timeout (integer)

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

Postgres Pro Enterprise : Документация: 15: 19.5. Журнал предзаписи : Компания Postgres Professional

Предварительный эксперимент

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

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

  1. Уменьшенное значение: checkpoint_timepout = 60 (1 минут).

  2. Значение по умолчанию: checkpoint_timepout = 300 (5 минут).

  3. Увеличенное значение: checkpoint_timepout = 900 (15 минут).

PG_HAZEL : Сценарий смешанной нагрузки "Mix" - для сравнения скорости СУБД.

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

PG_HAZEL : Влияние checkpoint_timeout на производительность/скорость СУБД PostgreSQL - итог Субд, Postgresql, Мониторинг, Производительность, Исследования, Длиннопост

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

PG_HAZEL : Влияние checkpoint_timeout на производительность/скорость СУБД PostgreSQL - итог Субд, Postgresql, Мониторинг, Производительность, Исследования, Длиннопост

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

Итог:

Для данной СУБД в сценарии смешанной нагрузки "Mix":

  1. Максимальная скорость СУБД достигается при значении параметра checkpoint_timeout = 60 при общей нагрузке 18 соединений.

  2. Максимальная нагрузка , после которой скорость СУБД начинает снижаться достигается при значении параметра checkpoint_timeout = 300 при общей нагрузке 26 соединений.

  3. При предельной общей нагрузке 111 соединений наибольшая скорость СУБД достигается при значении параметра checkpoint_timeout = 900.

Показать полностью 2
[моё] Субд Postgresql Мониторинг Производительность Исследования Длиннопост
1
2
kznalp
kznalp
2 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL⁠⁠

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

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Оптимизировать можно до бесконечности. Бесконечность - не предел.

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

Начало работ по использованию результатов корреляционного анализа ожиданий СУБД для подготовке процесса Continual improvement .

Постановка эксперимента

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

Конфигурация ВМ и СУБД

  • Postgres Pro (enterprise certified) 15.10.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Soft 11.4.0-1), 64-bit

  • CPU 50

  • RAM 88GB

  • RED OS 7.3

Приоритеты инцидентов

Подробнее о приоритетах

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - инцидент производительности СУБД . Ось Y - приоритет инцидента

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - инцидент производительности СУБД . Ось Y - приоритет инцидента

Результат

  • свыше 80% инцидентов производительности имеют приоритет 4

Количество SQL запросов по инцидентам

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - queryid запроса. Ось Y - количество инцидентов в которых участвовал запрос.

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - queryid запроса. Ось Y - количество инцидентов в которых участвовал запрос

SQL запросы участвующие в более 80% инцидентов

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - queryid запроса. Ось Y - количество инцидентов в которых участвовал запрос.

  • Количество SQL запросов участвующих во всех инцидентах = 5

  • Количество SQL запросов участвующих в 80% инцидентов = 29

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

wait_event_type

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

wait_event

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

События ожидания составляющие 80% от общего числа ожиданий.

SQL запросы для оптимизации

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Список SQL запросов участувующих в инцидентах

queryid = 1214551160677155501

План выполнения запроса

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Статистика ожиданий по типу IO

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

События ожидания по типу IO

История выполнения и событий ожидания по типу IO для queryid = 1214551160677155501

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

Статистика ожиданий по типу IPC

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

События ожидания по типу IPC

История выполнения и событий ожидания по типу IPC для queryid = 1214551160677155501

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

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

Результаты анализа по SQL queryid = 1214551160677155501

1. Событий ожидания типа IPC существенно больше чем событий по типу IO.

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

3. После добавления индексов , провести анализ результатов .

Показать полностью 19
[моё] Субд Postgresql Оптимизация Мониторинг Производительность Длиннопост
0
kznalp
kznalp
2 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr⁠⁠

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

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

У любого события есть причина .

Задача

Определить причину аномальной утилизации CPU и снижения производительности СУБД

Симптомы

Аномальная утилизация CPU сервера СУБД

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - метрика утилизации CPU.

Наблюдаемая проблема

Снижение операционной скорости СУБД

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - операционная скорость СУБД

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

Отрицательная корреляция между снижением операционной скорости и ростом ожиданий - отсутствует.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - ожидания СУБД

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - значение индикатора деградации скорости СУБД

Подробнее об индикаторе

https://dzen.ru/a/Z-FQYUcB3gepNYzA

Отчеты pgpro_pwr

G.3.11.2. Load distribution (Распределение нагрузки)

Этот раздел отчёта pgpro_pwr основан на представлении pgpro_stats_totals расширения pgpro_stats, если оно было доступно в течение отчётного интервала. Каждая таблица в данном разделе предоставляет данные за отчётный интервал о распределении нагрузки для определённого типа объектов, для которых собирается агрегированная статистика, например, баз данных, приложений, узлов или пользователей. Каждая таблица содержит по одной строке для каждого из ресурсов (таких, как общее время или общее число записанных разделяемых блоков), где распределение нагрузки показано на графике в виде линейчатой диаграммы с накоплением для объектов с наибольшей нагрузкой по этому ресурсу. Если область диаграммы, соответствующая объекту, слишком узка для включения заголовков, наведите указатель на эту область, чтобы получить подсказку с заголовком, значением и процентом. Таблицы «Load distribution among heavily loaded databases», «Load distribution among heavily loaded applications», «Load distribution among heavily loaded hosts» и «Load distribution among heavily loaded users» показывают распределение нагрузки для соответствующих объектов.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Наибольшую нагрузку создает DB-1

Статистика утилизации CPU

G.3.11.4.1. rusage statistics (Статистика использования ресурсов)

Этот раздел добавляется в отчёт, только если в отчётном интервале было доступно расширение pgpro_stats или pg_stat_kcache.

Таблица отчёта «Top SQL by system and user time» показывает запросы с наибольшей суммой значений полей user_time и system_time в представлении pg_stat_kcache или pgpro_stats_totals.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

SQL запрос с наибольшим потреблением CPU

Наиболее длительные SQL

Таблица отчёта «Top SQL by execution time» показывает запросы с наибольшей длительностью выполнения, определяемой по значению поля total_time представления pgpro_stats_statements или pg_stat_statements.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

SQL запрос с наибольшей длительностью выполнения

Причина инцидента и проблемный запрос

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Проблемный запрос

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

Показать полностью 9
[моё] Инженер Субд Postgresql Мониторинг Производительность Длиннопост
2
kznalp
kznalp
2 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

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

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

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

Скоро орешник даст плоды.

Начало

Эскизный проект

ℹ️Текущие возможности

✅Снимки pg_stat_activity , pg_locks , PostgreSQL RAM utilization.

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

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

✅История инцидентов снижения операционной скорости СУБД.

✅Связь между инцидентами и SQL выражениями.

✅Оперативная и сводная отчётность по инцидентам и нагрузочному тестированию.

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

✅Методология анализа инцидентов.

Показать полностью 1
[моё] Субд Postgresql Производительность Инженер Исследования Тестирование Мониторинг
0
kznalp
kznalp
2 месяца назад
Серия ITшное

Реактивный или проактивный мониторинг по мнению YandexGPT⁠⁠

Вопрос : какой мониторинг выгоднее использовать для оптимизации производительности субд postgresql - реактивный или проактивный ?

Ответ YandexGPT

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

Для исследования проблем с производительностью PostgreSQL важен систематический мониторинг. Некоторые инструменты позволяют получать информацию в режиме реального времени. Например, htop, iostat и vmstat.  3

Также для мониторинга PostgreSQL можно использовать внутренний сбор статистики. Например, pg_stat_activity помогает определить активные запросы к базе и кто их выполняет, а pg_stat_statements отображает популярные запросы с наибольшим временем выполнения.  3

Ещё для мониторинга можно применять системы, такие как Percona. Она позволяет быстро оценить динамику нагрузки на сервер и показывает главные показатели работы сервера. 

Яндекс Нейронные сети Субд Postgresql Мониторинг Текст
0
kznalp
kznalp
2 месяца назад
Серия ITшное

Реактивный или проактивный мониторинг по мнению DeepSeek⁠⁠

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

Ответ DeepSeek

Для оптимизации производительности PostgreSQL **проактивный мониторинг** предпочтительнее, так как он позволяет предотвращать проблемы до их возникновения, минимизируя простои и улучшая стабильность системы. Однако оптимальный результат достигается при **комбинации обоих подходов**.

### Почему проактивный мониторинг выгоднее:
1. **Предупреждение проблем**:
- Отслеживание метрик (CPU, память, I/O, индексы, блокировки) помогает выявить узкие места до их критического влияния.
- Пример: мониторинг роста таблиц или замедления запросов через `pg_stat_statements` позволяет заранее оптимизировать индексы или переписать запросы.

2. **Снижение простоев**:
- Анализ трендов (например, заполнение диска или увеличение времени ответа) позволяет планировать масштабирование и обновления.

3. **Экономия ресурсов**:
- Проактивное устранение проблем дешевле, чем аварийное восстановление после сбоев.

4. **Инструменты**:
- Prometheus + Grafana для сбора метрик.
- Настройка алертов на аномалии (например, через Alertmanager).
- Использование расширений PostgreSQL: `pg_stat_activity`, `pg_stat_bgwriter`, `pg_stat_statements`.

### Когда полезен реактивный мониторинг:
- Для анализа уже возникших инцидентов (например, внезапные блокировки или деградация запросов).
- Использование логов и инструментов вроде `pgBadger` для постфактум-анализа.
- Оптимизация запросов, которые не были выявлены проактивно.

### Итог:
- **Проактивный мониторинг** — основа для долгосрочной стабильности и оптимизации.
- **Реактивный** — дополнение для работы с непредвиденными сценариями.
- Для максимальной эффективности объедините оба подхода, но фокусируйтесь на проактивных методах.

Показать полностью
DeepSeek Субд Мониторинг Нейронные сети Postgresql Текст
1
0
kznalp
kznalp
2 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Анализ производительности СУБД PostgreSQL с использованием PG_HAZEL (практический пример)⁠⁠

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

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

Если правильно и вовремя обслуживать - СУБД будет летать !

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

  1. Проанализировать инциденты снижения скорости СУБД.

  2. Установить причины снижения скорости СУБД.

  3. Сформировать список мероприятий для устранения причин снижения скорости СУБД.

  4. Итог.

Шаблон решения задачи

https://dzen.ru/a/Z-4mhu9oFCnB-jp9

Отчетность для анализа

https://dzen.ru/a/Z-6YLjZRni5hLvtD

1.Проанализировать инциденты снижения скорости СУБД

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

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

Фрагмент таблицы инцидентов снижения скорости СУБД

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

  • ID : идентификатор инцидента снижения скорости СУБД

  • START TIME : время начала инцидента

  • FINISH TIME : время окончания инцидента

  • № : порядковый номер

  • IO : количество ожидания типа IO на время начала инцидента

  • IO CORRELATION : коэффициент корреляции между операционной скоростью и ожиданиями IO за отрезок [ START TIME - 1 ЧАС ; START TIME ]

  • LWLock : количество ожидания типа LWLock на время начала инцидента

  • LWLock CORRELATION : коэффициент корреляции между операционной скоростью и ожиданиями LWLock за отрезок [ START TIME - 1 ЧАС ; START TIME ]

Количество ожидания типа IO , LWLock по инцидентам

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

Ось X - ID инцидента. Ось Y - количество ожидания типа IO на начало инцидента

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

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

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

Ось X - ID инцидента. Ось Y - коэффициент корреляции между всеми ожиданиями и ожиданиями типа IO , LWLock на начало инцидента

Особенности инцидентов 34 , 36 :

  1. Коэффициент корреляции между ожиданиями СУБД в целом и ожиданиями типа LWLock больше , чем между ожиданиями СУБД в целом и ожиданиями типа IO.

  2. Количество ожидания типа LWLock меньше чем количество ожидания типа IO.

Графики операционной скорости и ожиданий по инцидентам снижения скорости

Инцидент 34

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

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

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

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

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

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

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

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

Инцидент 36

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

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

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

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

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

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

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

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

Для справки: ожидания типа IO , LWLock по данным отчета "Top wait events" pgpro_pwr

Инцидент 34

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

Инцидент 36

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

2. Установить причины снижения скорости СУБД

SQL запросы, имеющие наибольшую долю ожидания заданного типа

Инцидент 34

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

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

Статистика вызовов и ожидания по запросам имеющим ожидания типа IO

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

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

Статистика вызовов и ожидания по запросам имеющим ожидания типа LWLock

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

  • QUERYID : queryid SQL выражения , из представления pgpro_stats.

  • PGPRO_PWR_QUERYID : шестнадцатеричное значение queryid , для использования в отчетах pgpro_pwr.

  • CALLS : количество выполнений SQL выражения

  • WAITINGS : количество ожиданий

  • WAITINGS TO CALLS : количество ожиданий на одно выполнение

  • WAITINGS PPM : доля(в промилле) ожиданий типа IPC по данному SQL среди всех ожиданий по всем SQL за анализируемый период.

Результат:

Запрос queryid=2092406791392746781 имеет набольшую долю ожидания типа IO и LWLock среди всех запросов имеющих корреляцию ожидания с типом IO, LWLock.

Инцидент 36

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

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

Статистика вызовов и ожидания по запросам имеющим ожидания типа IO

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

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

Статистика вызовов и ожидания по запросам имеющим ожидания типа LWLock

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

  • QUERYID : queryid SQL выражения , из представления pgpro_stats.

  • PGPRO_PWR_QUERYID : шестнадцатеричное значение queryid , для использования в отчетах pgpro_pwr.

  • CALLS : количество выполнений SQL выражения

  • WAITINGS : количество ожиданий

  • WAITINGS TO CALLS : количество ожиданий на одно выполнение

  • WAITINGS PPM : доля(в промилле) ожиданий типа IPC по данному SQL среди всех ожиданий по всем SQL за анализируемый период.

Результат:

Запрос queryid=2092406791392746781 имеет набольшую долю ожидания типа IO и LWLock среди всех запросов имеющих корреляцию ожидания с типом IO, LWLock.

Главная причина снижения скорости СУБД

Запрос queryid=2092406791392746781 имеет набольшую долю ожидания типа IO и LWLock среди всех запросов имеющих корреляцию ожидания с типом IO, LWLock.

Текст запроса

Доступен в pgpro_pwr

План выполнения запроса

Доступен в pgpro_pwr

События ожидания при выполнении запроса 2092406791392746781

Инцидент 34

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

Статистика выполнения и событий ожидания по запросу 2092406791392746781

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

  • timestamp : точка времени сбора статистических данных уровня SQL.

  • datname : База данных, в которой выполнялся SQL запрос.

  • rolname : Роль, под которой выполнялся SQL запрос.

  • CALLS : Количество выполнений запроса .

  • WAITINGS : Количество ожиданий типа IO , LWLock .

  • WAITINGS TO CALLS : количество ожиданий на одно выполнение.

  • WAIT_EVENTS : события ожидания wait_event , возникающие при выполнении SQL запроса .

  • SQL : текст SQL запроса (не приведен).

События ожидания возникающие при выполнении SQL запроса:

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

  • LWLock / ParallelHashJoin : Ожидание синхронизации рабочих процессов в процессе выполнения узла плана Parallel Hash Join.

Инцидент 36

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

Статистика выполнения и событий ожидания по запросу 2092406791392746781

Cтолбцы таблицы:

  • timestamp : точка времени сбора статистических данных уровня SQL.

  • datname : База данных, в которой выполнялся SQL запрос.

  • rolname : Роль, под которой выполнялся SQL запрос.

  • CALLS : Количество выполнений запроса .

  • WAITINGS : Количество ожиданий типа IO , LWLock .

  • WAITINGS TO CALLS : количество ожиданий на одно выполнение.

  • WAIT_EVENTS : события ожидания wait_event , возникающие при выполнении SQL запроса .

  • SQL : текст SQL запроса (не приведен).

События ожидания возникающие при выполнении SQL запроса:

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

  • LWLock / ParallelHashJoin : Ожидание синхронизации рабочих процессов в процессе выполнения узла плана Parallel Hash Join.

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

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

3. Cписок мероприятий для устранения причин снижения скорости СУБД .

Мероприятия для снижения ожиданий DSMFillZeroWrite

События ожидания DSMFillZeroWrite в PostgreSQL связаны с операциями записи в разделяемую память (shared memory), где необходимо заполнить область нулями перед использованием.

Это может происходить при работе с большими объектами или при высокой нагрузке на систему.

Чтобы снизить количество таких событий, можно рассмотреть следующие шаги:

1. Оптимизация запросов и транзакций:

- Убедитесь, что ваши запросы оптимизированы и не выполняют избыточных операций.

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

2. Настройка параметров конфигурации:

- Увеличьте размер разделяемой памяти (shared_buffers), чтобы уменьшить частоту операций записи в разделяемую память.

- Настройте параметры, связанные с кэшированием и буферизацией, чтобы уменьшить количество операций записи.

3. Оптимизация использования разделяемой памяти:

- Убедитесь, что ваши приложения и расширения эффективно используют разделяемую память.

- Избегайте создания большого количества временных объектов, которые могут приводить к увеличению операций записи в разделяемую память.

Мероприятия для снижения ожиданий ParallelHashJoin

Ожидания ParallelHashJoin могут возникать из-за того, что PostgreSQL использует параллельные запросы для выполнения операций, таких как Hash Join. Это может привести к увеличению количества ожиданий, особенно если у вас много одновременных запросов или ограниченные ресурсы.

1. Отключить параллельные запросы:

- Вы можете отключить параллельные запросы, установив параметр max_parallel_workers_per_gather в 0. Это отключит использование параллельных рабочих процессов для операций, таких как Hash Join.

2. Оптимизировать индексы:

- Убедитесь, что у вас есть правильные индексы на таблицах, участвующих в запросе. Индексы могут помочь ускорить выполнение запросов и уменьшить необходимость в параллельных операциях.

3. Анализ и вакуумизация таблиц:

- Периодически выполняйте команды ANALYZE и VACUUM для обновления статистики и очистки мертвых строк. Это поможет оптимизатору запросов выбрать более эффективные планы выполнения.

4. Настройка параметров планировщика:

- Настройте параметры, такие как random_page_cost и cpu_tuple_cost, чтобы повлиять на выбор плана выполнения запроса. Например, уменьшение random_page_cost может сделать индексные сканирования более привлекательными.

5. Использование правильных операторов JOIN:

- Попробуйте использовать другие типы соединений, такие как Nested Loop или Merge Join, если они подходят для вашего запроса. Вы можете временно отключить Hash Join, установив параметр enable_hashjoin в off.

6. Оптимизация запросов:

- Проверьте, можно ли оптимизировать сами запросы, например, добавив дополнительные условия в WHERE-clause или используя более эффективные подзапросы.

Примеры команд для настройки параметров:

-- Отключить параллельные запросы

SET max_parallel_workers_per_gather = 0;

-- Отключить Hash Join

SET enable_hashjoin = off;

-- Установить параметры планировщика

SET random_page_cost = 1.1;

SET cpu_tuple_cost = 0.01;

Мероприятия для снижения ожиданий BufferMapping

Ожидания на BufferMapping в PostgreSQL могут возникать из-за интенсивных операций чтения, когда база данных часто обращается к данным на диске вместо кэша. Это может происходить, когда рабочий набор данных превышает доступную память, что приводит к частым операциям ввода-вывода (I/O).

1. Увеличение shared_buffers:

- Увеличение параметра shared_buffers может помочь уменьшить количество операций ввода-вывода, так как больше данных будет храниться в памяти.

2. Оптимизация запросов:

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

3. Увеличение effective_cache_size:

- Параметр effective_cache_size помогает PostgreSQL лучше оценивать доступную память для кэширования данных. Увеличение этого параметра может улучшить планирование запросов.

4. Увеличение work_mem и maintenance_work_mem:

- Увеличение параметров work_mem и maintenance_work_mem может помочь уменьшить количество операций ввода-вывода, особенно при выполнении операций сортировки и хранения данных.

5. Анализ и оптимизация индексов:

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

6. Обновление аппаратного обеспечения:

- Если возможно, обновите аппаратное обеспечение, особенно увеличьте объем оперативной памяти и используйте более быстрые диски (например, SSD).

7. Распределение нагрузки:

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

Мероприятия для снижения ожиданий ProcArrayLock

Задержки, связанные с блокировкой ProcArrayLock, могут возникать из-за интенсивной активности рабочих процессов, которые создают конкуренцию за доступ к ProcArray. Это особенно актуально при выполнении параллельных запросов и операций, таких как walsender.

Для уменьшения задержек ProcArray можно рассмотреть следующие шаги:

1. Оптимизация рабочих процессов:

- Уменьшите количество одновременно выполняемых рабочих процессов, чтобы снизить нагрузку на ProcArrayLock.

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

2. Настройка параметров конфигурации:

- Уменьшите значение параметра max_standby_streaming_delay, чтобы уменьшить задержку репликации.

- Настройте параметры, связанные с параллелизмом, такие как max_parallel_workers_per_gather и max_worker_processes, чтобы управлять количеством рабочих процессов.

3. Оптимизация хранения данных:

- Убедитесь, что у вас используется оптимальное хранилище данных, например, AWS EBS GP3, для уменьшения задержек ввода-вывода.

4. Итог

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

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

Pgpro_pwr + pg_hazel = стратегический , оперативный и тактический уровень мониторинга производительности СУБД PostgreSQL⁠⁠

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

Оперативный уровень
pg_hazel - инциденты производительности , корреляционный анализ ожиданий СУБД . Какие ожидания влияют на снижение скорости СУБД?

Тактический уровень
pg_hazel - какие SQL выражения вызывают ожидания , оказывающие влияние на снижение скорости СУБД?

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