引言
在面试中,大家应该经历过如下场景面试官:"用过mysql吧,你们是用自增主键还是UUID?"
你:"用的是自增主键" 面试官:"为什么是自增主键?"
你:"因为采用自增主键,数据在物理结构上是顺序存储,性能最好,blabla..."
面试官:"那自增主键达到最大值了,用完了怎么办?"
你:"what,没复习啊!!" (然后,你就可以回去等通知了!)
这个问题是一个粉丝给我提的,我觉得挺有意(KENG)思(B)! 于是,今天我们就来谈一谈,这个自增主键用完了该怎么办!
正文
简单版
我们先明白一点,在mysql中,Int整型的范围如下
我们以无符号整型为例,存储范围为0~4294967295,约43亿!我们先说一下,一旦自增id达到最大值,此时数据继续插入是会报一个主键冲突异常如下所示
//Duplicate entry '4294967295' for key 'PRIMARY'
那解决方法也是很简单的,将Int类型改为BigInt类型,BigInt的范围如下
就算你每秒10000条数据,跑100年,单表的数据也才 10000*24*3600*365*100=31536000