MySQL неожиданно повторно использует удаленные значения автоматического увеличения

Я использую сервер MySQL 5.6.21 на Amazon RDS в нескольких зонах доступности с таблицами InnoDB, и я испытываю поведение, которое не должно происходить в соответствии с тем, что я прочитал в документации.

MySQL повторно использует значения автоматического увеличения, когда самое высокое значение автоматического увеличения удаляется. Например, предположим, что у меня есть таблица с этими значениями автоинкремента: 1, 2, 3, 4, 5. Если значение 5 удалено, то MySQL повторно использует его при следующей вставке.

Прочитав всю соответствующую документацию MySQL, я вижу, что это невозможно, за исключением перезапуска сервера. Сервер не перезагружается, и я не вижу объяснения этому поведению.

Это вызывает серьезные проблемы для моего приложения, которое ссылается на назначенные значения автоматического увеличения в других местах для аудита. То, как MySQL должен вести себя в соответствии с документами, именно так, как мне нужно. Я искал по всему Интернету и не могу найти никого, кто испытывает эту конкретную проблему. У меня есть ощущение, что это как-то связано с RDS/репликацией, но я не могу найти ничего, что могло бы это объяснить.

Соответствующие настройки сервера MySQL:

auto_increment_increment = 1
auto_increment_offset = 1
innodb_autoinc_lock_mode = 1

Я сузил причину, чтобы исключить операторы вставки, которые повторно используют значения. Это связано с тем, что если я удалю строку с самым высоким значением автоинкремента (скажем, 5), а затем сразу же проверю следующее значение автоинкремента, просмотрев информационную схему, она покажет 6, как и ожидалось. Однако, если я подожду несколько секунд/минут, а затем обновлю информационную схему, следующее значение автоматического увеличения внезапно изменится на 5 без выполнения других запросов!

Любые идеи? Заранее спасибо.


person AndrewA    schedule 12.01.2016    source источник
comment
Удаленные значения можно использовать повторно, если вставляются новые строки с указанием удаленного идентификатора. Вы уверены, что не происходит ничего подобного?   -  person genespos    schedule 12.01.2016
comment
@genespos - извините, я должен был сказать, что во всех вставках значение автоматического увеличения не указывается в запросе   -  person AndrewA    schedule 12.01.2016
comment
Является ли ваш столбец с автоинкрементом частью многостолбцового индекса? Поскольку может применяться это.   -  person Lav    schedule 12.01.2016
comment
@Lav - Это очень интересно, и я не знал об этом. К сожалению, это не так. Значение идентификатора автоматического увеличения не является частью каких-либо многостолбцовых индексов в моих таблицах.   -  person AndrewA    schedule 12.01.2016
comment
Пожалуйста, включите общий журнал и повторите тест, где он внезапно изменится на 5. Затем выключите общий журнал (чтобы не заполнять диск) и посмотрите, что есть в этом журнале. Также проверьте SHOW GLOBAL STATUS LIKE 'Uptime%';, чтобы убедиться, что перезапуска не было.   -  person Rick James    schedule 13.01.2016
comment
@RickJames Спасибо за предложение, я обновлю здесь, как только смогу попробовать.   -  person AndrewA    schedule 13.01.2016