MySQL-自增主键

AUTO_INCREMENT

自增主键可以让主键仅可能的保持递增顺序插入,让索引更紧凑,但是可能会暴露业务数据,黑客可以根据一个id推断其它id,分布式场景可能存在抢主键问题。

自增主键保存在哪里?

MyISAM引擎自增主键保存在数据文件中,即使重启也不会丢失。
InnoDB在8.0以前保存在内存里,每次重启需要寻找数据库的最大主键值。
8.0之后保存在redo日志里。

自增主键一定连续吗?

不一定。

  1. 唯一约束或外键约束冲突导致事务回滚。
  2. 无法计算一次性会插入多少数据时
  3. 修改了auto_increment_increment变量;

自增主键申请策略

对于不确定一次性会插入多少条数据时,会采取指数分配策略。
第一次申请1个,不够用申请两个,再不够用申请4个,再不够用申请8个,依次类推。

自增主键用完了怎么办

用完了会报错,不再递增,最多2^31 -1 。

修改自增属性

auto_increment_increment 和auto_increment_offset两个变量。

posted @ 2022-09-11 21:12  店里最会撒谎白玉汤  阅读(140)  评论(0编辑  收藏  举报