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

Cards out!

Карточные, Ролевые, Стратегии

Играть

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

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

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

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

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

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

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
kznalp
kznalp
4 месяца назад
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
4 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Гипотеза об ожиданиях СУБД PostgreSQL⁠⁠

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

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

Время - деньги.

Определение ожидания СУБД

Серверный процесс выполняющий SQL запрос к СУБД, в процессе выполнения находится в основных состояниях:

· active: серверный процесс выполняет запрос.

· idle: серверный процесс ожидает новой команды от клиента.

· idle in transaction: серверный процесс находится внутри транзакции, но в настоящее время не выполняет никакой запрос.

Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики : Компания Postgres Professional

Если, серверный процесс находится состоянии active, то процесс может находится в либо в состоянии выполнения запроса, либо в состоянии ожидания:

wait_event_type text

Тип события, которого ждёт обслуживающий процесс, если это ожидание имеет место; в противном случае — NULL.

Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики : Компания Postgres Professional

Вывод

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

Термины и определения:

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

Интегральный показатель, рассчитываемый как сумма общего числа выполненных SQL выражений и общего числа строк, полученных или затронутых операторами за выбранный промежуток времени.

Для сглаживания выбросов используется медианное сглаживание.

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

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

События ожидания в PostgreSQL

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

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

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

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

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

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

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

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

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

Корреляция между ожиданиями

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

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

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

Практический вывод

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

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

Следовательно – снизив количество ожиданий данного типа время выполнения SQL запроса уменьшится и количество запросов за отрезок времени увеличится. Т.е. операционная скорость возрастет.

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

Заметка на память - как не надо завершать процесс в PostgreSQL⁠⁠

Иногда случается ситуация : нужно завершить долгий SQL запрос (кильнуть сессию).

Заметка на память - как не надо завершать процесс в PostgreSQL Субд, Postgresql, Полезное, Опыт, Личный опыт, Длиннопост

Стандартный способ, рекомендованный в документации :
select pg_terminate_backend( pid );


Однако, иногда, если запрос очень долгий , даже после прерывания процесса, pid всё равно еще остается в результате запроса select ... from pg_stat_activity ;


И в этой ситуации может возникнуть соблазн "kill -9 pid"
Чтобы побыстрее ...

Заметка на память - как не надо завершать процесс в PostgreSQL Субд, Postgresql, Полезное, Опыт, Личный опыт, Длиннопост

После выполнения kill , кластер PostgreSQL аварийно перезапустится , со всеми вытекающими последствиями .
Быстрее - не получится .

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

Заметка на память - как не надо завершать процесс в PostgreSQL Субд, Postgresql, Полезное, Опыт, Личный опыт, Длиннопост

P.S. Ну и как обычно , мнение ИИ. Страшилка о 'kill -9" от DeepSeek:

После выполнения команды `kill -9` для процесса PostgreSQL, выполняющего долгий запрос, возникают следующие последствия:

### 1. **Прерывание транзакции**
- Транзакция, связанная с убитым процессом, **не будет завершена корректно**. Поскольку `SIGKILL` (сигнал 9) нельзя перехватить или обработать, PostgreSQL не успевает выполнить откат (`ROLLBACK`) транзакции. Это может привести к:
- **Незавершенным изменениям данных**: Если транзакция выполняла модификацию данных (INSERT/UPDATE/DELETE), изменения останутся в состоянии "под вопросом" до восстановления.
- **Блокировкам (locks)**: Ресурсы (строки, таблицы), заблокированные транзакцией, могут остаться занятыми до очистки процесса.

### 2. **Автоматическое восстановление PostgreSQL**
- PostgreSQL обнаруживает аварийное завершение процесса и автоматически выполняет:
- **Очистку блокировок**: Все удерживаемые процессом блокировки освобождаются.
- **Откат транзакции**: Незавершенная транзакция откатывается с помощью механизма восстановления на основе **WAL (Write-Ahead Logging)**. Это гарантирует целостность данных, но может занять время, особенно если транзакция была крупной.

### 3. **Влияние на производительность**
- **Долгое восстановление**: Если убитый процесс работал с большим объемом данных, откат транзакции через WAL может задержать другие операции.
- **Возможные задержки**: Другие сессии, ожидавшие блокировок от убитого процесса, получат доступ к ресурсам только после завершения восстановления.

### 4. **Ошибки в клиентских приложениях**
- Клиент, инициировавший запрос, получит ошибку соединения (например, `connection terminated unexpectedly`). Приложение должно быть готово к таким сценариям (повторные попытки, обработка исключений).

### 5. **Риск для репликации (если используется)**
- В режимах синхронной репликации аварийное завершение процесса может временно нарушить синхронизацию данных между primary и standby-серверами. Однако механизм WAL гарантирует восстановление согласованности.

### 6. **Журналирование (логи)**
- В логах PostgreSQL появится запись об аварийном завершении процесса, например:
```
FATAL: terminating connection due to administrator command
LOG: server process (PID 12345) was terminated by signal 9: Killed
LOG: aborting any active transactions
```

---

### Рекомендации:
1. **Избегайте `kill -9`**, если это возможно. Используйте `pg_cancel_backend()` или `pg_terminate_backend()` для безопасного завершения запросов.
2. Для долгих транзакций настройте `statement_timeout` или `idle_in_transaction_session_timeout`.
3. Мониторьте активные транзакции через `pg_stat_activity`.

**Итог**: `kill -9` не повредит данные благодаря WAL, но может вызвать временные задержки и требует времени на автоматическое восстановление.

Показать полностью 3
[моё] Субд Postgresql Полезное Опыт Личный опыт Длиннопост
2
kznalp
kznalp
4 месяца назад
Postgres DBA
Серия ITшное

Переход из Oracle в Postgres Pro: не просто смена СУБД, а сдвиг подхода. Интервью с Марком Ривкиным⁠⁠

Какую часть работы администраторов баз данных уже можно заменить ИИ, а какую вряд ли удастся автоматизировать?

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

Какой навык у администратора баз данных станет самым важным в ближайшие 5 лет?

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

Переход из Oracle в Postgres Pro: не просто смена СУБД, а сдвиг подхода. Интервью с Марком Ривкиным

Postgresql Субд Планы на будущее Интервью Текст
0
kznalp
kznalp
4 месяца назад
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
4 месяца назад
Серия ITшное

Реактивный или проактивный мониторинг по мнению ИИ . 1:0 в пользу DeepSeek⁠⁠

Итого - счет сравнялся .
Текущий общий счет в серии "Какой ИИ полезнее для PostgreSQL DBA" - ничья 1:1

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

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

YandeхGPT vs. DeepSeek. У DeepSeek - большие проблемы

DeepSeek Яндекс Нейронные сети Субд Postgresql Текст
1
kznalp
kznalp
4 месяца назад
Серия ITшное

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

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

Ответ YandexGPT

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

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

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

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

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