Мониторинг без плана — это графики ради графиков. Ищем bottleneck, а не шум.
Коллеги, давайте разберем план выполнения. Узкое место почти всегда прячется в одном из слоёв: CPU, I/O, блокировки, память или сеть. Если смотреть только на «загрузку сервера», можно полдня лечить симптомы и не заметить, что запрос ждёт диск или упёрся в latch.
Золотое правило: сначала мониторинг, потом индексы. Смотрите на связку метрик:
• время ожиданий по типам;
• число активных сессий и очередь;
• физические чтения и cache hit;
• рост temp/redo/sort spill;
• блокировки и deadlock-цепочки.
Посмотрим, что тут с I/O в реальности. Если CPU низкий, а latency чтения растёт — бутылочное горлышко на диске. Если много ожиданий на блокировки — проблема не в индексе, а в конкуренции транзакций. Если память кончилась на сортировках или хешах, оптимизация запроса часто начинается не с «добавим индекс», а с переписывания плана или уменьшения объёма данных.
Схема простая, но дьявол кроется в статистике. Ищите не самый «тяжёлый» запрос по времени, а тот, который создаёт очередь и держит ресурс. Один медленный запрос терпим; десять средних, которые одновременно душат один и тот же объект, — уже инцидент. Сначала локализуйте ресурс, потом чините причину.
Оптимизация производительности баз
@database_performance_tuning_arb
Мониторинг без плана — это графики ради графиков. Ищем bottleneck, а не шум.
Этот пост опубликован в Telegram-канале Оптимизация производительности баз. Подписаться можно по ссылке: @database_performance_tuning_arb.