什么是列存储索引?
列存储索引是一种使用列式数据格式(称为“列存储”)存储、检索和管理数据的技术。
列存储
列存储是在逻辑上整理为包含行和列的表,实际上以列式数据格式存储的数据。
行存储
行存储是在逻辑上整理为包含行和列的表,实际上以行式数据格式存储的数据。 此格式是存储关系表数据的传统方法。 在 SQL Server 中,行存储是指基础数据存储格式为堆、聚集索引或内存优化表的表。
为何要使用列存储索引?
列存储索引可实现极高的数据压缩级别(通常是传统方法的 10 倍),从而明显降低数据仓库存储成本。 对于分析,列存储索引实现的性能比 B 树索引高出一个量级。 列存储索引是数据仓库和分析工作负载的首选数据存储格式。 从 SQL Server 2016 (13.x)开始,可以使用列存储索引对操作工作负荷执行实时分析。
列存储索引速度较快的原因:
-
列存储来自同一个域且通常相似的值,从而提高了压缩率。 最大限度地减少或消除系统中的 I/O 瓶颈,并显著降低内存占用量。
-
较高的压缩率通过使用更小的内存中空间提高查询性能。 反过来,由于 SQL Server 可以在内存中执行更多查询和数据操作,因此可以提升查询性能。
-
批处理执行可同时处理多个行,通常可将查询性能提高 2 到 4 倍。
-
查询通常仅从表中选择几列,这减少了从物理介质的总 I/O。
如果我们使用的临时表数据量很大,并且只用于查询,就可以使用列存储方式,一方面可以降低存储的内存,另外一方面可以提升查询的性能。