Оптимізація продуктивності
Проєктування індексів бази даних
Індекси — робота з найбільшим важелем у базі даних: правильний композитний індекс перетворює хвилинні звіти на мілісекунди, а помилковий — лише додає податок на кожен запис. Професійне проєктування індексів виходить із реальних патернів запитів, шанує правило лівого префікса і прополює так само завзято, як додає.
Головне
- Проєктуйте зі slow log та інвентаря запитів застосунку, а не зі здогадок.
- Будуйте композитні індекси з пошаною до лівого префікса та порядку селективності.
- Обирайте покриваючі індекси для найгарячіших шляхів читання.
- Щокварталу прибирайте дублікати, надлишкові та ніколи не вживані індекси.
- Пам'ятайте про ускладнення запису: кожен індекс платить податок на INSERT/UPDATE/DELETE.
- Використовуйте префіксні та часткові індекси, де повні індекси займають більше місця.
- Перевіряйте EXPLAIN перед і після; план має довести виграш.
- Документуйте підставу для кожного індексу, щоб майбутні розробники не скинули життєво потрібні.
Часті запитання
Більше індексів — швидше, чи не так?
Ні, читання виграються, записи платять. Майстерність — у мінімальному наборі, що покриває гарячі шляхи.
Як знайти невикористовувані індекси?
Статистика performance-schema за повні бізнес-цикли, потім поетапні видалення з відкатом.
Що ламається найчастіше?
Одноколонкові індекси під багатоколонкові умови фільтрації та відсутні індекси під несподіване зростання.
Чи змінюють ORM підхід?
Вони ховають запити, а не витрати; ми простежуємо вихід ORM до того ж аналізу.
Допомога Kinetikatech: оптимізація продуктивності
Чесно: більшість команд приходить до нас, попередньо спробувавши все самі: Налаштування сервера, оптимізація баз даних, кешування та фронтендова робота над швидкістю, що скорочують час завантаження і витрати хостингу. Служба Оптимізація швидкості сайтів та Адміністрування серверів існує, щоб не доводилося опановувати оптимізація продуктивності гірким досвідом — налаштування, нагляд і нічні сюрпризи о третій беремо на себе.