mysql

(8)主键id 自增id

2020-11-21  本文已影响0人  hedgehog1112

1、不设置主键mysql如何处理?

InnoDB自动创建 一个不可见6字节row_id(作为主键id),由InnoDB维护全局dictsys.row_id,每插入一条,全局row_id加一

全局row_id一直涨2 的 48 幂次 - 1 时再 + 1 row_id 的低 48 位都为 0,再插入row_id=0,主键冲突,避免隐患,要定义主键。

2、自增 ID 用完了,怎么办?

2的32次方-1  4294967295,可应付大部分,有用完风险用 big int unsigned

1)创建表,只包含自增 id,并插入一条数据。

create tablet 0 (id int unsigned auto\_increment primary key); insert into t 0 values(null);

2)通过 show 命令 show create table t0; 查看表情况

自增 ID 最大=2 的 32 幂次方 - 1 = 4294967295,因为int unsigned,

3)建表时,直接声明 AUTO_INCREMENT 初始值

AUTO_INCREMENT 已经变成 4294967295 了,再插入,主键冲突

https://mp.weixin.qq.com/s/tc9s6-Y5zOVEt5jWpsJaZw

上一篇下一篇

猜你喜欢

热点阅读