1

我试图弄清楚列存储索引如何在 SQL Server 中工作。我正在寻找的是关于列存储索引的底层存储和随附搜索算法的技术参考指南或白皮书,特别是关于 SQL 2016(以防与早期版本不同)。我什至不知道这个算法/​​设计是否有正式的学术名称,因为我在我查看过的 Microsoft 文档中没有找到任何类似的东西。

与我对传统行存储索引的追求相同的是,它们的底层存储和搜索算法基于 B+ 树。B+ 树算法有大量的白皮书可供消化。我看到的关于 Columnstore Indexes 的唯一算法参考与同样基于 B+ Trees的 DeltaStore 功能有关。

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

4

2 回答 2

0

在这一点上,我遇到的最好的资源是The-Paper-Trail.org的关于柱状存储的博客文章。它没有详细介绍搜索算法背后的细节,但它对底层存储以及对学术白皮书的额外参考有一些很好的解释。如果其他人对这些东西感兴趣,我强烈建议您早点而不是晚点查看此页面。

编辑:经过进一步阅读,列存储索引的“搜索算法”基本上是索引的普通扫描,减去任何行存储消除和列消除。通过对高度压缩的数据(由于按列存储模型)以批处理模式执行扫描操作,并且根据查询、聚合和字符串谓词下推优化可以进一步限制从磁盘提取的记录,从而使扫描操作更加高效。 列存储索引 - 查询性能

这两个资源结合在一起可以很好地了解幕后发生的事情,因此,如果您有兴趣,请看一看。最后,一句忠告;忽略或跳过 SQL 2016 发布之前发布的大部分文献,因为许多底层术语和逻辑在过去 3 个 SQL Server 版本中发生了显着变化,我不建议任何人使用早于 2016 年的任何东西,如果您将使用此功能。

编辑 2:我发现Microsoft的一篇文章确认列存储索引不是 B+ 树。

于 2017-03-18T15:58:46.590 回答
0

任何有关以大笔钱出售的产品的内部数据结构的内容都不会发布完整的详细信息。对于 SQL Server,有一些来自 MSFT 的书籍,例如这本书,其中讨论了内部结构。

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

于 2017-03-16T18:06:19.030 回答