SQL Server 列存储索引与查询调优
1. 列存储索引简介
列存储技术是数据库领域的一项重大变革,最初在 SQL Server 2012 中引入,并在 SQL Server 2014 中得到显著改进。该技术主要针对数据仓库工作负载。
在数据仓库中,经典的星型模式模型包含维度表和事实表。维度表用于跟踪分析数据的主题,如客户、员工、产品和时间,每个维度表都有一个代理键。事实表存储大量数据,包含每个维度表的代理键列以及表示数量和金额等度量的列。
在列存储技术引入之前,SQL Server 中数据的传统内部表示基于行存储技术,即数据以行的方式存储和处理。随着近年来数据仓库中数据量的不断增长,行存储技术在多个层面上变得效率低下,而列存储技术则解决了这些问题。
2. 行存储技术的局限性
- 索引调优复杂 :行存储技术在索引方面有很多可能性,这会导致花费大量时间和精力进行索引调优。如果系统中有很多查询模式,为每个查询在事实表上创建完美的覆盖索引是不现实的,最终会创建过多的索引。为了限制索引数量,需要对查询进行优先级排序,并尝试合并具有相似索引要求的多个查询,但这会导致许多查询没有真正最优的索引支持,每个查询可能会使用包含多余列的索引,从而导致执行的读取次数超过最优数量。
- 压缩效果不佳 :行存储的数据默认不压缩,需要显式请求行或页压缩。即使进行了压缩,由于数据是逐行存储的,SQL Server 所能达到的压缩级别远低于列存储。
- 执行模型低效 :目前行存储的执行模型是行执行模型,
超级会员免费看
订阅专栏 解锁全文
419

被折叠的 条评论
为什么被折叠?



