bigint如何自增_自增主键用完了该怎么办

当MySQL的自增主键达到int的最大值时,可以将类型改为bigint以扩展其范围。但在线上环境中,直接ALTER语句修改可能会导致表无法进行更新操作。可行的方法包括使用mysql5.6+的在线修改功能(但不适用于所有类型变更)、借助第三方工具如pt-online-schema-change或gh-ost(需注意触发器和外键情况),以及在从库修改表结构后进行主从切换。实际上,由于分库分表的需求,自增主键达到最大值的情况在实际应用中较少见。
摘要由CSDN通过智能技术生成

引言

在面试中,大家应该经历过如下场景面试官:"用过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值