SQL Server列存储实现方案

本文介绍了SQL Server从2012至2016版本中列存储的发展,特别是2014版本解决的可更新问题。列存储索引通过行组、列段和增量行组实现高效存储,Tuple Mover进程确保性能。列存储提供高查询性能和数据压缩,但在更新、删除和某些数据类型支持上存在局限性。
摘要由CSDN通过智能技术生成

SQL Server从2012版本开始支持列存储,但2012版本使用列存储会导致表进入只读状态;2014版本使用可更新聚集列存储索引技术解决了只读的问题,使用列存储的表支持修改;2016版本列存储支持操作分析,能够对事务工作负载运行高性能实时分析。

列存储索引是一种使用列式数据格式(称为“列存储”)存储、检索和管理数据的技术。聚集列存储索引是整个表的物理存储。

以下将对聚集列存储索引技术的实现方案进行分析。

目录

数据存储&划分

行组

列段

物理存储

增量行组

Tuple Mover

数据操作

query

insert

delete

update

BULK LOADING

优缺点

优点

缺点

疑问


数据存储&划分

行组

关系型数据库中,数据以行写入,列存储首先需要将表的行数据划分为行组,再将行组中的列进行压缩,为了提高性能和压缩率,行组中的行数必须足够大,每个行组最多包含1,048,576 行。

 

列段

上面说到列存储首先要划分行组,再将行组中的列进行压缩,这里压缩的单位称为列段

物理存储

聚集列存储索引是整个表的物理存储,磁盘的每个Page仅仅存储来自单列的值。为了减少列段碎片和提升性能,列存储索引可能会将一些数据暂时存储到称为“增量存储”(DeltaStore)的聚集索引中。

增量行组

上面提到“增量存储”(DeltaStore),“增量存储”就是所有增量行组(B-tree结构)的统称。增量行组通过存储行数据,并在行数达到阈值后将行移入列存储,从而提升了列存储压缩率和性能。在增量行组达到最大行数后,它会关闭。 元组移动进程(tuple-mover) 会检查是否有已关闭行组。将已关闭的行组进行压缩,存储到列存储中。

Tuple Mover

当不断有数据插入列存储表的时候,DeltaStore中的数据会越来越多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值