【发布时间】:2018-03-04 01:50:03
【问题描述】:
我正在对某天可能发生的问题进行一些研究。 假设您有一个带有 id 和 name 字段的 InnoDB MySQL 表。 id 字段具有 BIGINT(20) 并且是 AUTO_INCREMENT 加上它的主键。
如果此表已满,这意味着我们已达到 id 的限制并且无法再生成自动增量编号,您会怎么做。
【问题讨论】:
-
codetinyint:1 字节,-128 到 +127 / 0 到 255(无符号) smallint:2 字节,-32,768 到 +32,767 / 0 到 65,535(无符号) mediumint:3 字节, -8,388,608到8,388,607 / 0到16777215(无符号)INT /整数:4个字节,2,147,483,648到2147483647/0〜4294967295(无符号)BIGINT:8个字节,-9,223,372,036,854,775,808 9,223,372,036,854,775,807 / 0〜18,446,744,073,709,551,615(无符号)code -
然后将 bigint 转换为无符号 bigint。当它已满时,您可能已经创下了 MySQL 数据库中拥有最多数据的记录。假设你不搞乱 auto_increment 列,让它做它的工作。我的意思是,你不必担心这个。你看过最大可能的 bigint 值有多大吗?我想说 90% 的数据库用户永远不会达到 auto_increment 列中 32 位整数的上限。你说的是 64 位值。
-
您的系统将在您达到该数量之前关闭。
-
感谢大家的所有回答。使用无符号整数,这是一个很好的提示!谢谢:)
标签: mysql auto-increment bigint