Есть таблица:
ID char(32)
Date int
....
primary key (ID, Date)
пара неуникальных ключей
и партиции по Date по годам
ID - 32-символьный уникальный хеш.
Avg row length показывает 369.
На сейчас в таблице ~90 млн строк.
Данные из неё не удаляются, только вставляются новые.
Вставка в таблицу иногда занимает дикое количество времени (в среднем ~секунда на строку, на некоторых строках прыгает до 5-10 секунд) и иногда падает с
Lock wait timeout exceeded.
Насколько я понимаю, происходит это из-за того, что для вставки нового ID движку нужно перестроить индекс, что на таких объемах накладно.
Я попробовал на тестовой машине - добавил суррогатный auto increment, пару (ID, Date) сделал просто unique - это ускорило вставку на ~40%, и самый медленный запрос упал с 5-10 секунд до 0.8-1 сек. На боевой машине и боевой базе протестировать эти изменения, понятно, не могу.
Собственно, спрашиваю только чтобы уточнить наверняка: правильно ли я решаю эту проблему и действительно ли суррогатный ключ в таких ситуациях даёт прирост скорости?