Я реализую приложение базы данных, и я буду использовать и JavaDB и MySQL как база данных. У меня есть столбец ID в моих таблицах, который имеет целое число как тип, и я использую auto_increment-функцию баз данных для значения.
Но что происходит, когда я получаю больше чем 2 (или 4), миллиард сообщений и целого числа недостаточно? Целое число переполнено и продолжается, или исключение выдается, что я могу обработать?
Да, я мог измениться на долго как тип данных, но как я проверяю, когда это необходимо? И я думаю, что существует проблема с получением last_inserted_id () - функции, если я использую долго в качестве типа данных для идентификационного столбца.
Комментарий Джима Мартина из §3.6.9. «Использование AUTO_INCREMENT» документации MySQL:
На всякий случай, если есть какие-либо вопросы, поле AUTO_INCREMENT / DOES NOT WRAP /. Как только вы достигнете предела размера поля, команды INSERT генерируют ошибку. (Согласно Джереми Коулу)
Быстрый тест с MySQL 5.1.45 приводит к ошибке:
ОШИБКА 1467 (HY000): не удалось прочитать значение автоинкремента из механизма хранения
Вы можете проверить это ошибка при вставке и примите соответствующие меры.
Вы узнаете, когда произойдет переполнение, посмотрев на самый большой ID. Вы должны изменить его задолго до того, как какое-либо исключение даже приблизится к тому, чтобы быть выброшенным.
На самом деле, вы должны проектировать с достаточно большим типом данных для начала. Производительность вашей базы данных не пострадает, даже если вы с самого начала будете использовать 64-битный идентификатор.