Интернет-магазин бытовой электроники «ЭлектроМир» работал на MySQL 5.7 с 2018 года. База данных выросла до 85 ГБ, каталог содержал 1.8 миллиона товаров, ежедневная аудитория — 120 000 уникальных посетителей. Пока магазин был небольшим, MySQL справлялся, но с ростом начались проблемы.
Клиент обратился к нам со списком конкретных болевых точек:
- Репликация ломается раз в месяц. MySQL использует отдельный журнал для репликации (binlog), который не связан с журналом InnoDB. При высокой нагрузке slave-реплика отставала на часы, а при сбое приходилось пересобирать её с нуля — процесс на 6 часов.
- Сложные запросы работают медленно. Аналитические запросы с подзапросами и GROUP BY исполнялись до 45 секунд. Оптимизатор MySQL не мог самостоятельно выбрать оптимальный план — разработчикам приходилось вручную переписывать запросы.
- JSON-данные хранятся неэффективно. Характеристики товаров хранились в JSON-колонках MySQL, но без поддержки индексов по отдельным полям JSON. Поиск по характеристикам выполнял full table scan.
- Нет полноценного полнотекстового поиска на русском.ке> MySQL Full-Text Search не поддерживает русскую морфологию из коробки.
После анализа мы рекомендовали миграцию на PostgreSQL 16 и обосновали это технически.
Оставить комментарий