Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads
Post #1759
127
🤔 Каким образом можно найти "медленный запрос" и проанализировать его в PostgreSQL?
🚩Методы и инструменты.
🟠Включение журналирования медленных запросов
Настройка параметров конфигурации PostgreSQL для журналирования медленных запросов позволяет отслеживать запросы, выполнение которых занимает много времени.
1⃣Откройте файл конфигурации PostgreSQL (
2⃣Настройте следующие параметры:
3⃣Перезапустите сервер PostgreSQL для применения изменений:
🟠Использование инструмента `pg_stat_statements`
Расширение
1⃣Включите расширение в
2⃣Перезапустите сервер PostgreSQL:
3⃣Создайте расширение в нужной базе данных:
4⃣Используйте запрос для получения информации о медленных запросах:
🟠Анализ запросов с помощью `EXPLAIN` и `EXPLAIN ANALYZE`
Команды
1⃣Выполните команду
2⃣Выполните команду
3⃣Анализируйте выходные данные, чтобы понять, какие операции занимают больше всего времени (например, полное сканирование таблицы, узкие места при соединении таблиц и т.д.).
🟠Использование системных представлений и утилит
pg_stat_activity: Показывает текущую активность базы данных, включая выполняемые запросы и их состояние.
pg_locks: Отображает информацию о текущих блокировках в базе данных.
1⃣Индексы:
Убедитесь, что для часто используемых условий
2⃣Переписывание запросов:
Попробуйте переписать запросы для улучшения их производительности.
3⃣Материализованные представления:
Используйте материализованные представления для часто выполняемых сложных запросов.
4⃣Конфигурация сервера:
Настройте параметры конфигурации PostgreSQL для оптимизации производительности (например,
Ставь 👍 и забирай 📚 Базу знаний
🚩Методы и инструменты.
🟠Включение журналирования медленных запросов
Настройка параметров конфигурации PostgreSQL для журналирования медленных запросов позволяет отслеживать запросы, выполнение которых занимает много времени.
1⃣Откройте файл конфигурации PostgreSQL (
postgresql.conf).2⃣Настройте следующие параметры:
# Включить логирование всех запросов
log_statement = 'all'
# Либо логирование только медленных запросов
log_min_duration_statement = 1000 # Логировать запросы, выполнение которых заняло более 1000 мс (1 секунда)
3⃣Перезапустите сервер PostgreSQL для применения изменений:
sudo systemctl restart postgresql
🟠Использование инструмента `pg_stat_statements`
Расширение
pg_stat_statements позволяет собирать статистику по выполненным запросам и предоставляет информацию о частоте, времени выполнения и других характеристиках запросов.1⃣Включите расширение в
postgresql.conf:shared_preload_libraries = 'pg_stat_statements'
2⃣Перезапустите сервер PostgreSQL:
sudo systemctl restart postgresql
3⃣Создайте расширение в нужной базе данных:
CREATE EXTENSION pg_stat_statements;
4⃣Используйте запрос для получения информации о медленных запросах:
SELECT
query,
calls,
total_time,
mean_time,
stddev_time,
rows,
min_time,
max_time
FROM
pg_stat_statements
ORDER BY
total_time DESC
LIMIT 10;
🟠Анализ запросов с помощью `EXPLAIN` и `EXPLAIN ANALYZE`
Команды
EXPLAIN и EXPLAIN ANALYZE позволяют понять, как PostgreSQL планирует и выполняет запросы, предоставляя детальную информацию о плане выполнения.1⃣Выполните команду
EXPLAIN для запроса:EXPLAIN SELECT * FROM my_table WHERE id = 1;
2⃣Выполните команду
EXPLAIN ANALYZE для запроса:EXPLAIN ANALYZE SELECT * FROM my_table WHERE id = 1;
3⃣Анализируйте выходные данные, чтобы понять, какие операции занимают больше всего времени (например, полное сканирование таблицы, узкие места при соединении таблиц и т.д.).
🟠Использование системных представлений и утилит
pg_stat_activity: Показывает текущую активность базы данных, включая выполняемые запросы и их состояние.
SELECT
pid,
usename,
state,
query,
now() - query_start AS duration
FROM
pg_stat_activity
WHERE
state != 'idle'
ORDER BY
duration DESC;
pg_locks: Отображает информацию о текущих блокировках в базе данных.
SELECT * FROM pg_locks;
1⃣Индексы:
Убедитесь, что для часто используемых условий
WHERE и JOIN существуют соответствующие индексы.2⃣Переписывание запросов:
Попробуйте переписать запросы для улучшения их производительности.
3⃣Материализованные представления:
Используйте материализованные представления для часто выполняемых сложных запросов.
4⃣Конфигурация сервера:
Настройте параметры конфигурации PostgreSQL для оптимизации производительности (например,
work_mem, shared_buffers, maintenance_work_mem).Ставь 👍 и забирай 📚 Базу знаний