MySQL-自增主键
AUTO_INCREMENT
自增主键可以让主键仅可能的保持递增顺序插入,让索引更紧凑,但是可能会暴露业务数据,黑客可以根据一个id推断其它id,分布式场景可能存在抢主键问题。
自增主键保存在哪里?
MyISAM引擎自增主键保存在数据文件中,即使重启也不会丢失。
InnoDB在8.0以前保存在内存里,每次重启需要寻找数据库的最大主键值。
8.0之后保存在redo日志里。
自增主键一定连续吗?
不一定。
- 唯一约束或外键约束冲突导致事务回滚。
- 无法计算一次性会插入多少数据时
- 修改了auto_increment_increment变量;
自增主键申请策略
对于不确定一次性会插入多少条数据时,会采取指数分配策略。
第一次申请1个,不够用申请两个,再不够用申请4个,再不够用申请8个,依次类推。
自增主键用完了怎么办
用完了会报错,不再递增,最多2^31 -1 。
修改自增属性
auto_increment_increment 和auto_increment_offset两个变量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!