@Kostik_1993
Web Developer

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

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

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

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

Войти через центр авторизации
Похожие вопросы