Оптимизация производительности
Проектирование индексов базы данных
Индексы — самая результативная работа с базой: правильный составной индекс превращает минутный отчёт в миллисекунды, а неудачные индексы только нагружают каждую запись. Профессиональное проектирование индексов начинается с реальных шаблонов запросов, учитывает правило самого левого префикса и так же агрессивно удаляет лишнее, как и добавляет.
Главное
- Проектировать по журналу медленных запросов и перечню запросов приложения, а не по догадкам.
- Строить составные индексы с учётом самого левого префикса и избирательности.
- Отдавать предпочтение покрывающим индексам для самых горячих путей чтения.
- Раз в квартал удалять дублирующие, избыточные и неиспользуемые индексы.
- Помнить про усиление записи: каждый индекс утяжеляет INSERT, UPDATE и DELETE.
- Применять префиксные и частичные индексы там, где полные тратят место впустую.
- Проверять через EXPLAIN до и после: план должен доказать выигрыш.
- Документировать обоснование индексов, чтобы будущие разработчики не выбросили несущие.
Частые вопросы
Больше индексов — значит быстрее, верно?
Нет, чтение выигрывает, а запись платит. Искусство — подобрать минимальный набор, покрывающий горячие пути.
Как найти неиспользуемые индексы?
По статистике performance schema за полные бизнес-циклы, затем поэтапное удаление с возможностью вернуть.
Что ломается чаще всего?
Односоставные индексы на многосоставных условиях выборки и отсутствие индексов там, где объёмы внезапно выросли.
Меняют ли ORM подход?
Они прячут запросы, а не их цену: мы трассируем вывод ORM обратно в тот же анализ.
Как мы берём на себя оптимизация производительности
Вам не обязательно становиться экспертом в оптимизация производительности: Настройка серверов, работа с базами данных, кэширование и ускорение фронтенда, которые сокращают время загрузки и расходы на хостинг. Именно для этого и существует наша услуга Оптимизация скорости сайтов и Администрирование серверов — настройка, усиление защиты, мониторинг и живой человек на связи днём и ночью.