ili*_*ode 7 sql t-sql database sql-server optimization
我刚刚了解了列存储索引的奇迹以及如何"使用列存储索引比传统的面向行的存储实现高达10倍的查询性能提升,并且在未压缩的数据大小上实现高达7倍的数据压缩."
有了这么大的性能提升,有没有理由不使用它们?
Columnstore Indexes对DataWarehousing(DW)特别有用.这意味着您只会在特定时间执行更新或删除操作.
这是因为他们的特殊设计具有三角形加载和更多功能.此视频将显示详细信息以及对Columnstore Index的确切区别的基本概述.
但是,如果您具有应用程序的高I/O(输入和输出); Columnstore Index并不理想,因为传统的行索引将在该特定目标上查找和操作(使用通过索引找到的行).这种情况的一个例子是ATM应用程序,它经常改变给定人员帐户的行的值.
Columnstore在整个COLUMNS中建立索引,这在这种情况下并不理想,因为行值将遍布整个分段(columnsindexes).
我强烈推荐这个视频!
我还要详细说明非群集vs群集列存储:
非群集Columnstore(2012年更新)再次保存WHOLE数据,意味着(2X数据)两倍的数据.
其中Clustered Columnstore索引(2014年更新)仅占用大约16GB数据的5MB.这是由于RTE(运行时编码),它可以节省每列中重复数据的数量.使索引占用更少的额外存储空间.
主要缺点是,如果查询包含选择谓词,则将很难读取索引的一部分。有很多方法可以做到(分区,消除段),但是既不是特别容易可靠地实现,也不能扩展到复杂的需求。
对于仅扫描工作负载,列存储索引非常理想。