回答
自增 ID 指定义一个初始值,然后不停地往上加步长的数值字段。虽然自然数是没有上限的,但在计算机中会为字段定义类型,如
id int unsigned
,int 占四个字节,那么它就有上限了。对于自增 ID 用完了的场景需要根据实际情况来分析:有主键和无主键。
一、表定义的自增 id
当表定义的自增值达到上限后,再申请下一个 id 时,得到的值保持不变。故插入时会提升主键冲突错误。
create table t_test(
`id` int unsigned auto_increment,
`name` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB,auto_increment=4294967295;
int 占四个字节,unsigned int 能到的最大值是 232-1(4294967295)。通常情况下是够用了,但在互联网业务频繁插入删除的表中可能会被用完。此时可以将主键 id 创建为 8 个字节的 unsigned bigint。
备注:单表 42 亿数据量也是惊人,老早就需要考虑分表了。