MySQL整理

2019-02-08  本文已影响2人  SlowGO

为什么使用 b+ tree 存储索引?

二叉树的高度太高,红黑树比二叉树好,但高度也不可控,b+ tree 的高度是恒定的。

可以到 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 上查看不同数据结构的效果。

而且b+ tree 只在叶子节点中存储数据,叶子节点间也是顺序链接的,索引做范围查找时非常高效。

聚集索引 以主键为索引来组织数据的方式。

为什么要用自增ID做主键?

插入层面:

在逻辑的数据结构上,自增ID插入时始终是在树的最后,否则插入时是没有规律的,树的裂变会更加复杂,而且比较成本比数字更高。

在物理存储上,自增ID可以使page空间连续申请,没有碎片,否则,申请空间时会产生碎片,而且在树的分裂后物理数据需要移动,影响效率,也会产生碎片。建立副索引时,叶子节点存储非自增ID的数据时空间成本也更高。

查询层面:

自增ID方式寻址更快,例如UUID的查找比较肯定弱于自增数字。

业务层面:可以隐藏业务数据。

上一篇下一篇

猜你喜欢

热点阅读