Коли повільність уже б’є по користувачах
Уяви момент, коли сторінка дашборда зависає, а ти вже підключився до сервера й нервово дивишся на EXPLAIN ANALYZE. У цій ситуації AI має допомогти тобі зібрати факти, а не вигадувати новий індекс навмання.
Що треба зібрати до розбору
Спочатку дивись не на рішення, а на доказову базу. Потрібні схема, кількість рядків, наявні індекси, точний текст запиту і зрозумілий опис навантаження. Без цього будь-яка порада про оптимізацію буде лише здогадкою.
Де AI справді корисний
Добре сформульована підказка може змусити модель розібрати план виконання крок за кроком, пояснити, який вузол забирає час, і підказати безпечні наступні перевірки. Це корисно, коли запит б’є по API або дашборду, а ти хочеш спершу зрозуміти механіку повільності.
Типові помилки
- Плутати повільний вузол у плані з причиною всієї проблеми.
- Забувати про
ANALYZEі дивитися лише на приблизний план. - Рекомендувати індекс, не звіривши селективність і реальну частоту запитів.
- Ігнорувати розподіл даних, параметри фільтрів і те, як саме запит викликається з коду.
Коли кликати DBA
Якщо потрібні зміни в схемі, незрозумілий план або запит стоїть на критичному шляху з великим write load, не намагайся добити проблему самотужки. На цьому етапі потрібні права, контекст і, можливо, DBA або відповідальний власник бази.
Наступний крок
Візьми цей шаблон і застосуй його до одного повільного запиту, який уже дратує команду. Спочатку збери факти, потім розбери план, і лише після цього вирішуй, чи взагалі потрібна зміна в базі.
Короткий чеклист
- Збери точний SQL-запит, рушій бази даних і версію.
- Запиши розмір таблиць, кількість рядків і наявні індекси для всіх таблиць у запиті.
- Запусти EXPLAIN або EXPLAIN ANALYZE в безпечному середовищі та збережи сирий результат.
- Вкажи реальний сценарій: фільтри, типові значення параметрів, пікове навантаження і місце виклику.
- Порахуй, чи повільна частина пов'язана з join, sort, scan або відсутнім фільтром.
Діагностувати повільний SQL-запит без ризикованих змін
Ти допомагаєш безпечно розібрати повільний SQL-запит. Спочатку попроси в мене: - рушій і версію бази даних; - точний SQL-запит; - схему таблиць і зв'язки між ними; - кількість рядків у кожній важливій таблиці; - наявні індекси; - поточний execution plan або EXPLAIN ANALYZE; - типовий робочий сценарій: фільтри, параметри, частоту запуску та пікове навантаження. Потім поясни, де саме, ймовірно, витрачається час, простою мовою. Не пропонуй schema changes, нові індекси, міграції або production DDL, доки докази цього не підтвердять. Якщо плану немає, скажи, який безпечний крок перевірити першим. Якщо я надам EXPLAIN ANALYZE, розбери його вузол за вузлом і покажи, де з'їдається час. Наприкінці дай короткий список безпечних наступних дій і поясни, яку саме ознаку треба побачити для кожної з них.