Ответ
Профилирование SQL-запросов — это процесс анализа выполнения запросов к базе данных для выявления узких мест по производительности (медленные запросы, высокие затраты CPU/I/O).
Цели профилирования:
- Найти самые ресурсоемкие запросы.
- Проанализировать план выполнения (execution plan).
- Выявить недостающие индексы.
- Обнаружить блокировки (deadlocks) и проблемы с параллельным доступом.
Основные инструменты и методы:
- Встроенные средства СУБД:
- PostgreSQL:
EXPLAIN ANALYZE,pg_stat_statements, лог медленных запросов. - MySQL:
EXPLAIN,SHOW PROFILES,Performance Schema, лог медленных запросов (slow_query_log).
- PostgreSQL:
- Мониторинговые системы: Datadog, New Relic, Prometheus с экспортерами для БД.
- Профилировщики приложений: Интеграция с APM (Application Performance Monitoring), например, в Spring Boot Actuator с Micrometer.
Пример анализа плана выполнения в PostgreSQL:
EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 123 AND status = 'SHIPPED';
Результат покажет тип сканирования (Seq Scan, Index Scan), стоимость, время и использование индексов, что позволит оптимизировать запрос или добавить составной индекс (customer_id, status).