Налаштування MariaDB під магазин: що справді впливає
Стаття
База даних — найчастіше вузьке місце інтернет-магазину, але виглядає це як «навантаження на процесор». Розберемо, які налаштування справді впливають, а які згадують за звичкою.
Параметр, який вирішує найбільше
Обсяг буферного пулу — область пам'яті, де база тримає дані й індекси. Якщо він менший за робочий обсяг даних, база постійно читає з диска замість пам'яті.
Типова ситуація: значення лишилось за замовчуванням — кілька сотень мегабайт — а база магазину важить кілька гігабайтів. Збільшення цього параметра зазвичай дає більший приріст, ніж усі інші налаштування разом.
Орієнтир: на виділеному сервері під базу віддають більшу частину пам'яті; на спільному з веб-сервером — стільки, щоб лишалось на PHP-воркери. Тут важливо не перестаратись: якщо пам'яті забракне, система почне вбивати процеси.
Повільні запити
Другий за важливістю крок — увімкнути лог повільних запитів і подивитись, що туди потрапляє. Майже завжди виявляється кілька конкретних запитів, які виконуються на кожній сторінці й не мають потрібного індексу.
Це важливо: додати індекс під конкретний запит дає більше, ніж будь-який тюнінг конфігурації. Але й індексів не має бути забагато — кожен сповільнює запис.
Про що часто забувають
- Тип таблиць. У старих магазинах трапляються таблиці в застарілому форматі, який блокує всю таблицю при записі. На активному магазині це відчутно.
- Кількість одночасних з'єднань має бути узгоджена з кількістю PHP-воркерів — інакше або черга, або вичерпання пам'яті.
- Розмір тимчасових таблиць. Якщо він замалий, складні запити скидаються на диск.
- Обслуговування. Таблиці замовлень і сесій з часом розростаються — періодична чистка й оптимізація дають помітний ефект.
Чого не варто робити
Копіювати конфігурацію з чужої статті. Значення розраховуються під конкретний обсяг пам'яті й профіль навантаження. Конфігурація «для потужного сервера» на маленькому призведе до падінь через нестачу пам'яті.
Практична робота — налаштування MariaDB для продакшну. У парі з цим зазвичай ідуть загальна оптимізація сервера й моніторинг, щоб бачити навантаження на базу в динаміці.