论 数据库 B Tree 索引 在 固态硬盘 上 的 离散存储

传统的做法 , 数据库 的 B Tree 索引 在 磁盘上是 顺序存储 的 , 这是考虑到 磁盘 机械读写 的 特性 。 

实际上 , B Tree 是一个 树形结构 , 可以采用 链式 存储 , 就是像 链表 那样 。 而 链式存储 就是 离散存储 。

固态硬盘 是 电子读写 , 所以 随机读写 和 顺序读写 的效率是一样的 。

所以 , 在 固态硬盘 上 , B Tree 索引 可以 采用 链式存储(离散存储) 的 方式 。

我之前说 数据库的瓶颈在于 大数据量频繁 Insert 索引排序 , 实际上 不是 排序 , 而是在索引中 插入一个新项 时 , 新项 之后 的 原有的 索引项 全部要 向后 移动 。

就相当于是 线性表 插入元素 。 表的数据量大时 , 这个花费时间很大 。

如果 采用 链式存储 , 那么在 索引 里 插入一项 相当于 链表 插入一个 节点 , 时间复杂度 为 1 。  

这样就 大大提高了效率 。 可以大大的提高 大并发 大数据量 Insert update delete 的 处理速度 。

我们可以参考这篇文章  “内存是硬盘 , 硬盘是磁带”      https://blog.csdn.net/u013613428/article/details/55259924

原文地址:https://www.cnblogs.com/KSongKing/p/9501686.html