Проблема автоинкремента MySQL с нумерацией - PullRequest
0 голосов
/ 17 марта 2012

У меня есть таблица в моей базе данных с приблизительно 5-минутными записями, и я замечаю, что идентификаторы каждой записи не увеличиваются на единицу при каждой вставке.

Например, у меня есть следующие настройки схемы:

my_table activity_id INT (11) PRIMARY (AUTO_INCREMENT), create_at DATETIME

Если я смотрю на таблицу и сортирую поДАТА ВРЕМЯ, цифры не являются последовательными.На самом деле кажется, что MySQL ищет, когда есть удаление, а затем добавляет туда новую запись.

Edit    Delete  5000089     2012-03-17 04:31:46
Edit    Delete  5000087     2012-03-17 04:31:44
Edit    Delete  5000086     2012-03-17 04:31:43
Edit    Delete  5000085     2012-03-17 04:31:43
Edit    Delete  5000084     2012-03-17 04:31:31
**Edit  Delete  5000088     2012-03-17 04:31:30**
**Edit  Delete  5000076     2012-03-17 04:31:30**
Edit    Delete  5000082     2012-03-17 04:31:29

Как вы можете видеть из информации о том, что в 4:31:30 по Гринвичу у нас было2 вставки, где должно быть 83, и 84, но его странное увеличение.При вставке базы данных из приложения идентификатор не указывается, а для поля activity_id установлено значение Auto_increment.

Любая помощь будет очень полезна, если это произойдет.

Кто-нибудь видел что-либо подобное раньше?

1 Ответ

1 голос
/ 17 марта 2012

Документация с автоинкрементом имеет следующий абзац:

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

Кажется, подразумевается, что значения индекса используются повторно в таблицах InnoDB, а в некоторых случаях в таблицах MyISAM. Поэтому, если вы удалите строку, есть вероятность, что MySQL создаст новую строку с идентификатором старой строки.

...