mysql主键索引数据结构

发布时间: 2023-11-21 11:41 阅读: 文章来源:1MUMB2129PS

在我们公司的DB规范中,明确规定:

1、建表语句必须明确指定主键2、无特殊情况,主键必须单调递增

对于这项规定,很多研发小伙伴不理解。本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题:

1、为什么innodb表需要主键? 2、为什么建议innodb表主键是单调递增? 3、为什么不建议innodb表主键设置过长?

B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。B通常认为是Balance的简称。这个数据结构一般用于数据库的索引,综合效率较高。目前很多数据库产品的索引都是基于B+tree结构。MySQL也采用B+tree,它是B-tree的一个变种,其实特性基本上差不多,理解了B-tree也就懂了B+tree。

1、一颗M阶B-Tree具有的特性【熟记于心】

1) 根结点的孩子数>=2(前提是树高度大于1) 2) 除根结点与叶子结点,其他结点的孩子数为[ceil(m/2),m]个。ceil函数表示上取整数 3) 所有叶子结点都出现在同一层,叶子结点不存储数据。 4) 各个结点包含n个关键字信息:(P0,K1,P1,K2,P2......Kn,Pn) 其中: 4.1) Ki(i=1,2......n)为关键字,且K(i-1)

•••展开全文