跳转到内容

自增键空间

使用 MySQL 时候,主键往往会设置为递增,主键数字默认被创建为有符号整数。当插入了足够多的数据行时,继续插入会导致出错。

如果将主键设置为无符号整数(unsigned),数据量限制会变成原本的 2 倍。

我们来看一下不同的数据结构有多大。以下分别对应为整数类型以及有符号最大值,无符号整数最大值。

  • tinyint 127 255
  • smallint 32767 65535
  • mediumint 8388607 16777215
  • int 2147483647 4294967295
  • bigint 9223372036854775807 18446744073709551615

在选择主键的数据类型时候,必须要结合当前业务来进行判断。

同时,MySQL 可以为整数类型指定宽度,例如 INT(11),但它并不会限制数据的合法范围。只是规定了 MySQL 的一些交互工具用来显示字符的个数。对于存储和计算来说,INT(1) 和 INT(20) 没有区别。