列存储索引正确用法

时间:2014-06-28 19:53:14

标签: sql sql-server database tsql optimization

我刚刚了解了列存储索引的奇迹以及如何使用列存储索引比传统的面向行的存储实现高达10倍的查询性能提升,并且在未压缩的数据大小上实现高达7倍的数据压缩"

如果有如此大的性能提升,有没有理由不使用它们?

3 个答案:

答案 0 :(得分:6)

Columnstore Indexes对 DataWarehousing(DW)特别有用。这意味着您只会在特定时间执行更新或删除。

这是由于它们采用三角形加载和更多功能的特殊设计。此视频将显示精确的详细信息以及对Columnstore Index的确切差异的基本概述。

传统

但是,如果你有一个高 I / O (输入和输出)的应用程序; Columnstore Index并不理想,因为传统的行索引将在该特定目标上查找和操作(使用通过索引找到的行)。这方面的一个例子是ATM应用程序,它经常更改给定人员帐户的的值。

列存储

COLUMNS 中的

列存储索引索引在这种情况下并不理想,因为行值将遍布整个分段(columnsindexes)。

我强烈推荐视频!

我还要详细说明非群集vs群集列存储:

  

非群集Columnstore(2012年更新)再次保存 WHOLE 数据,这意味着(2X数据)数据的两倍。

     

Clustered Columnstore索引(2014年更新)对于大约16GB的数据仅占用5MB。这是由于RTE(运行时编码),它可以节省每列中重复数据的数量。使索引占用更少的额外存储空间。

答案 1 :(得分:5)

主要的缺点是,如果查询包含选择性谓词,您将很难只读取索引的一部分。有办法(分区,分段消除)但这些方法既不易于可靠地实现,也不能扩展到复杂的需求。

对于仅扫描工作负载,列存储索引非常理想。

答案 2 :(得分:2)

您好detailed explanation of columns store index可以找到here

ColumnStore Index

列存储索引是一种使用称为列存储的列式数据格式存储,检索和管理数据的技术。

SQL Server 2012引入了此功能,旨在显着加快常见数据仓库查询的处理时间。列存储索引的主要目标适用于典型的数据仓库数据集,并在从大型数据集中提取数据时提高查询性能。

它们是基于列的索引,能够通过为常见数据仓库查询(如过滤,聚合,分组和星型连接查询)提供更快的性能,从而转换用户的数据仓库体验。它们按列索引而不是按行存储数据,如索引当前所做的那样。