为什么MySQL推荐使用自增主键?

为什么MySQL推荐使用自增主键?

主键数据记录本身被存于主索引(一棵B+Tree)的叶子节点上,这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开辟一个新的页(节点),如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页;

而如果使用非自增主键,由于每次插入主键的值近似于随机,因此每次新记录都要被插到现有索引页的中间某个位置,此时MySQL不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多开销,同时频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结构,后续不得不通过OPTIMIZE TABLE来重建表并优化填充页面

参考文献

相关推荐
晓衣2 小时前
2025“獬豸杯”全国电子数据取证竞赛-k8s服务器取证wp
服务器·经验分享·程序人生·网络安全·容器·kubernetes·学习方法
JosieBook9 小时前
【程序人生】有梦想就能了不起,就怕你没梦想
程序人生·职场和发展
利以檀本人(梦泽不忙)3 天前
#T1359. 围成面积
c++·程序人生·算法
jingling5553 天前
【高级】系统架构师 | 信息系统战略规划、EAI 与新技术
程序人生·职场和发展·系统架构·学习方法·程序员创富
序属秋秋秋4 天前
我的创作纪念日——《惊变365天》
经验分享·学习·程序人生·纪念日·生活·大学生
蓑衣客VS索尼克4 天前
第三章:生活重构:当程序员不再只是“码农“
学习·程序人生·重构·生活
武子康4 天前
66AI-调查研究-68-具身智能 应用全景:家庭、工业、医疗、交通到虚拟交互的未来趋势
人工智能·程序人生·ai·职场和发展·交互·个人开发·具身智能
swanwei5 天前
技术人员突围之路(15年技术管理经验总结)之十
学习·程序人生·生活·求职招聘·交友
武子康6 天前
AI-调查研究-67-具身智能 核心技术构成全解析:感知、决策、学习与交互的闭环系统
人工智能·科技·学习·程序人生·ai·职场和发展·职场发展
郝学胜-神的一滴6 天前
Pomian语言处理器研发笔记(二):使用组合模式定义表示程序结构的语法树
开发语言·c++·笔记·程序人生·决策树·设计模式·组合模式