mysqli — PHP и Mysql InnoDB (автоматическая добавочная стоимость)

В настоящее время у меня есть база данных с идентификатором в качестве основного + автоинкрементного значения другое поле с именем refcode в качестве уникального значения

Я заметил большие пробелы в инкрементном значении, в настоящее время последний идентификатор равен 762480, в то время как таблица содержит только 16553 строки.

Есть ли способ устранить это поведение? Мне не нужен скрипт cron, который продолжает вставлять старые значения

Должен ли я беспокоиться или нет

1

Решение

Эта проблема может быть вызвана удалением записей — если согласованность базы данных установлена ​​хорошо, все в порядке.

Но иногда этот разрыв может быть вызван неудачной транзакцией базы данных. Если разрыв такой большой, как в вашем случае, я рекомендую проверять используемые транзакции БД в коде.

0

Другие решения

Вы не должны беспокоиться. auto_increment ключи являются последовательными, но с точки зрения всей истории таблицы, поэтому, если вы удалите кучу записей, она не будет заполнять старые ключи бекапом или переиндексировать всю таблицу, чтобы не было пропусков.

0

Вот как AUTO_INCREMENT Колонки предназначены для работы. Основная задача AUTO_INCREMENT должен быть всегда уникальным и не быть последовательным.

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

Так что вам не нужно беспокоиться об этом.

0
По вопросам рекламы [email protected]