Как выявить медленные SQL запросы
Python
Middle
Без компании
Как выявить медленные SQL запросы
Ответы
Для выявления медленных SQL-запросов можно использовать несколько подходов:
- **Логирование медленных запросов**
В PostgreSQL можно включить логирование запросов, выполняющихся дольше заданного времени:
```
-- В postgresql.conf
log_min_duration_statement = 1000 -- логировать запросы >1 сек
```
- **EXPLAIN ANALYZE**
Анализ плана выполнения запроса:
```
EXPLAIN ANALYZE SELECT * FROM large_table WHERE condition;
```
- **Профайлеры БД**
- `pg_stat_statements` в PostgreSQL
- `slow_query_log` в MySQL
- `SQL Server Profiler` для MS SQL
- **ORM-специфичные инструменты**
Например, в Django:
```
from django.db import connection
print(connection.queries) # все выполненные запросы
```
- **Мониторинг**
Инструменты вроде Datadog, New Relic или Prometheus + Grafana.
Ключевые метрики для анализа: время выполнения, количество обращений к диску, использование индексов, размер возвращаемых данных.