SQL Server列存储索引的基础存储和搜索算法是什么

时间:2017-03-16 17:26:09

标签: sql-server algorithm sql-server-2016 columnstore

我正在试图弄清楚如何在SQL Server中使用Columnstore Indexes。我正在寻找的是针对列存储索引的底层存储和附带搜索算法的技术参考指南或白皮书,特别是关于SQL 2016(如果与早期版本不同)。我甚至不知道这个算法/​​设计是否有正式的学术名称,因为我没有在我审查的Microsoft文档中发现任何类似的名称。

与传统行存储索引相比,我所追求的是它们的基础存储和搜索算法基于B +树。 B + Tree算法有很多白皮书要消化。关于Columnstore Indexes我唯一看到的算法参考属于DeltaStore功能,它也是based on B+ Trees

我希望底层的存储和搜索算法不是专有的,我的谷歌技能只是让我失望,但如果事实证明这是专有的,知道这将有助于平息我的好奇心。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

任何有关以货币形式出售的产品的内部数据结构的内容都不会公布完整的详细信息。对于SQL Server,有一些来自MSFT的书籍,例如this one,它们谈论内部。

关于找到您想要的详细信息:YMMV。

答案 1 :(得分:0)

此时,我遇到的最佳资源是The-Paper-Trail.org关于柱状存储的博客文章。它没有涉及搜索算法背后的细节,但它对底层存储以及对学术白皮书的其他参考有一些很好的解释。如果其他人对这些内容感兴趣,我强烈建议您提前查看此页面,而不是稍后。

编辑:进一步阅读后,看起来像列存储索引的“搜索算法”基本上是索引的香草扫描,而不是任何行存储消除和列消除。通过在批处理模式下针对高度压缩的数据执行(由于列式存储模型),扫描操作变得更加高效,并且根据查询,聚合和字符串谓词下推优化可以进一步限制从磁盘提取的记录。 Columnstore indexes - query performance

这两个资源相结合,可以很好地了解幕后发生的事情,所以如果您有兴趣,请看看。最后,提出建议;忽略或跳过SQL 2016发布之前发布的大部分文献,因为很多基础术语和逻辑在过去3个版本的SQL Server中发生了很大变化,我不建议任何人在2016年之前使用任何内容。你将要使用这个功能。

编辑2:我在Microsoft找到了一篇文章,确认列存储索引不是B +树。