(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