【发布时间】:2019-02-09 03:58:53
【问题描述】:
大多数 SQL 关系数据库都支持表中的聚集索引的概念。聚集索引,通常实现为 B 树,表示给定表中的实际记录,按磁盘/存储上的索引进行物理排序。这种特殊聚集索引的一个优点是,在遍历 B-tree 搜索一条记录或一组记录后,可以立即在叶子节点处找到实际数据。
这与 非 聚集索引形成对比。非聚集索引存在于聚集索引之外,并且还使用一列或多列对基础数据进行排序。但是,叶节点可能没有查询中所需的所有列的数据。在这种情况下,数据库必须对原始数据进行磁盘查找以获取此信息。
在我在 Stack Overflow 和其他地方看到的大多数数据库资源中,这种额外的磁盘寻道被视为严重的性能损失。我的问题是,假设所有数据库文件都存储在固态驱动器 (SSD) 上,这种分析将如何变化?
从Wikipedia page for SSDs 开始,SSD 的随机访问时间小于 0.1 毫秒,而机械硬盘的随机访问时间通常慢 10-100 倍。
SSD 是否缩小了集群索引和非集群索引之间的差距,从而使前者对整体性能变得不那么重要?
【问题讨论】:
标签: sql clustered-index solid-state-drive non-clustered-index