Оптимизация производительности
Разбор медленных запросов MySQL
Девять медленных сайтов из десяти — это медленные базы данных в костюме сайта. Системный разбор медленных запросов, журналирование, группировка по суммарному влиянию, планы EXPLAIN и проектирование индексов превращают загадочную медлительность в упорядоченный список правок с измеримым выигрышем после каждого изменения.
Главное
- Включить журнал медленных запросов и запросов без индексов с разумным порогом long_query_time.
- Группировать через pt-query-digest: ранжировать по суммарному времени, а не по худшему запросу.
- Читать вывод EXPLAIN правильно: тип доступа, использование ключа, число просмотренных строк против переданных.
- Проектировать покрывающие индексы для горячих путей и убирать пересекающиеся лишние.
- Лечить шаблоны N+1 в коде приложения: никакой индекс не спасёт болтливый цикл.
- Подбирать размер временных таблиц, буферов соединения и пула InnoDB по данным измерений.
- Перемерять главные запросы после каждого изменения и вести журнал их производительности.
- Планировать повторный разбор: рост данных незаметно обесценивает старые планы.
Частые вопросы
Почему сайт медленный при свободном процессоре?
Классическое ожидание базы данных: процессоры простаивают, пока запросы стоят в очереди. Журналы доказывают это за минуты.
Какой прирост типичен?
Улучшение исправленных запросов в 10-100 раз — обычное дело; после полного прохода сайт целиком ускоряется в 2-5 раз.
Помешает ли анализ боевой среде?
Нет. Накладные расходы журналирования около 1%, а сам анализ идёт вне боевой среды на копиях журналов.
А что с Percona или MariaDB?
Методика та же, различаются детали по движкам. Мы настраиваем MySQL, MariaDB и Percona Server.
Как мы берём на себя оптимизация производительности
Мы разбирались с этим сотни раз: Настройка серверов, работа с базами данных, кэширование и ускорение фронтенда, которые сокращают время загрузки и расходы на хостинг. С услугой Оптимизация скорости сайтов и Администрирование серверов вы получаете полный цикл: мы оцениваем, внедряем, следим круглосуточно и подключаемся в течение 30 минут, когда это действительно нужно.