Каков самый большой идентификационный номер, который autoincrement может произвести в mysql
У меня есть база данных, которая быстро заполняется данными, мы говорим о 10-20k строках в день.
Что такое ограничение ID с опцией и autoincrement? Если ID создается как целое число, я могу сделать максимальное значение 2,147,483,647 для значений без знака?
но что, когда autoincrement идет выше этого? Все рушится? Что тогда будет решением?
Я уверен, что у многих людей есть большие базы данных, и я хотел бы их услышать.
спасибо вы.
2 ответов
Если вы беспокоитесь о том, что он слишком быстро выходит за рамки, я бы установил PK как неподписанный BIGINT. Это дает вам максимальное значение 18446744073709551615, которого должно быть достаточно.
| Min. (inclusive) | Max. (inclusive)
-----------------------------------------------------------------------------
INT Signed (+|-) | -2,147,483,648 | +2,147,483,647
-----------------------------------------------------------------------------
INT Unsigned (+) | 0 | 4,294,967,295
-----------------------------------------------------------------------------
BIGINT Signed (+|-) | -9,223,372,036,854,776,000 | +9,223,372,036,854,776,000
-----------------------------------------------------------------------------
BIGINT Unsigned (+) | 0 | 18,446,744,073,709,552,000
Если у вас есть таблица mysql с идентификатором столбца (INT unsigned), и таблица имеет 4,294,967,295 записей, то вы пытаетесь вставить еще 1 запись, идентификатор новой записи будет автоматически изменен и установлен на max, который является "4,294,967,295", поэтому вы получаете сообщение об ошибке MySQL Duplicate entry '4294967295' for key 'PRIMARY'
, у вас будут дублированные идентификаторы, если столбец установлен как первичный ключ.
2 Возможных Решения:
- Простой Подход: расширить пределы, установка ID в BIGINT без знака, как Дэн Армстронг сказал. Хотя это не значит, что он нерушим! и производительность может быть затронута, когда таблица становится действительно большой.
- Более Жесткий Подход: перегородки используйте, который немного более сложный подход, но дает лучшую производительность и действительно не ограничивает базу данных (ваш единственный предел-размер вашего физического жесткого диска.). Twitter (и подобные огромные веб-сайты) используйте этот подход для своих миллионов твитов (записей) в день!