@Kostik_1993
Web Developer

Как оптимизировать вставку данных в таблицу с 2млн строк?

Есть таблица с на данный момент 2 миллионами товаров. Периодически нужно добавлять новые позиции, при этом данные из таблицы также используем для проверки наличия товара перед вставкой. Проблемы в том что очень часто проверка на наличие совпадает с моментом добавления товара и при перестроении индексов запрос начинает заметно тормозить. Как можно оптимизировать этот сценарий чтобы и индексы были и скорость не падала?
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
СУБД может сама проверить наличие записи перед вставкой либо по первичному ключу либо по другому уникальному ключу.
INSERT ... ON DUPLICATE KEY UPDATE - можно указать какие поля обновлять при нахождении. Допустим, обновить дату, наименование и т.д.
Необходимо добавить уникальный индекс, если отсутствует.

при перестроении индексов запрос начинает заметно тормозить
Я не уверен в этом. Как это было замерено?
Ответ написан
trapwalker
@trapwalker
Программист, энтузиаст
Пока не диагностирована конкретная проблема, нет смысла оптимизировать методом тыка, тем более не видя всей картины.
Попробуйте логировать тайминги всех запросов на клиентах. По факту каждого выполнения каждого запроса нужно указывать таймштамп старта и длительность.
Потом сливайте все логи в одну кучу и стройте гистограмму, потом анализируйте что происходит с БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы