Mysql auto_increment reset БЕЗ перестройки индекса?

Должен быть способ сброса значения auto_increment для таблицы без перестройки всего индекса. У меня есть таблица с более чем 2 миллиардами строк, в которую случайно вставлен идентификатор около 4,2 миллиарда. Из прошлого опыта я знаю, что попытка установить значение auto_increment обратно на то, что должно быть, заставит mysql перестроить весь индекс, что, вероятно, займет 24 часа для таблицы такого размера. Честно говоря, я не могу поверить, что это просто "как" это работает по умолчанию. Нет абсолютно никакой необходимости перестраивать весь индекс таблицы, просто потому, что вы хотите изменить это значение.

Должен быть способ. Но я не могу найти нигде. ИДЕИ ПОЖАЛУЙСТА!

(Перестраивая индексы, я знаю, что myisamchk может сделать это в 100 раз быстрее, чем сам процесс mysql. Но я не могу сказать mysql, чтобы использовать myisamchk вместо себя, чтобы перестроить индекс после изменения идентификатора автоинкремента. Должен быть способ!!!)

1 ответ

Исходя из этой статьи, похоже, что вы можете сбросить случайный идентификатор до правильного значения или удалить строку и затем перезапустить сервер, поскольку значение автоинкремента для таблиц innodb хранится в памяти. Я не пробовал это раньше, но это может сработать.

Другие вопросы по тегам