Как найти медленный запрос в PostgreSQL
Python
Senior
Без компании
Как найти медленный запрос в PostgreSQL
Ответы
Для поиска медленных запросов в PostgreSQL можно использовать несколько подходов:
- **pg_stat_statements** - расширение для сбора статистики по запросам:
```
CREATE EXTENSION pg_stat_statements;
SELECT query, total_time, calls, mean_time
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;
```
- **Логирование медленных запросов** (в postgresql.conf):
```
log_min_duration_statement = 1000 # логировать запросы дольше 1 секунды
```
- **EXPLAIN ANALYZE** для анализа конкретного запроса:
```
EXPLAIN ANALYZE SELECT * FROM large_table WHERE condition;
```
- **pgBadger** - инструмент для анализа логов PostgreSQL, который помогает выявлять проблемные запросы.
Для эффективного анализа стоит обращать внимание на:
- Время выполнения (total_time)
- Количество вызовов (calls)
- Пропорциональное время (mean_time)
- Планы выполнения (EXPLAIN)