当前位置:首页 » 存储配置 » 列存储场景

列存储场景

发布时间: 2025-09-21 08:47:50

Ⅰ ColumnStore index (列存储索引)解析

首先,介绍列存储的概念:在传统数据库存储中,数据采用行存储方式。例如,在SQL Server中,每个页面大小为8KB,若每条数据长度为500字节,理论上可以存储大约16条数据,每条数据包含了所有字段的信息。如图所示,多个页面存储了成行数据。



接下来,介绍列存储,数据以列的形式存储,而不是以行的形式。在SQL Server中,数据向行组或段存储。例如,假设表有5个字段(列),每个红色柱体代表一个段,每5个段组成一个行组。每个段仅包含一个列的数据,而行组包含所有列的数据。



每个段最多可以存储100万条该列的数据,从性能角度来看,100万条数据可以实现最优性能,数据量较少时,段的性能会降低。



列存储与行存储相比,列存储在数据仓库场景下表现更佳,数据仓库用户数量较少,数据量巨大,数据变化较少。列存储能将大量数据压缩到1/10,从而减少I/O、CPU和内存使用,提高性能。此外,列存储还采用了批量模式、段消除等技术,对性能有很大提升。



列存储适合以下场景:




  • 使用星型/雪花模型构建的数据仓库




  • 表(或分区)记录数大于100万




  • 主要执行报表类SQL查询,而非键查找




  • 数据更新和删除操作较少,大量插入操作可行




  • 表中没有VARCHAR(MAX), NVARCHAR(MAX), 或 VARBINARY(MAX) 数据类型




  • 在某些特定的OLTP数据库场景下,如实时操作分析,列存储也可适用





列存储的物理结构包括行组和delta存储。假设表有1105万条记录,每个行组容纳100万条,总共有11个行组,剩余5万记录存储在delta存储中。delta存储用于存储不足100万条数据的行存储数据,而行组采用列存储且进行了压缩。



随着插入数据增加,delta存储的数量增加,当数量达到100万时,delta存储停止接收数据,转换为行存储并进行压缩。如有更多数据插入,生成新的delta存储。



列存储结构包括行组、delta存储、和删除位图。删除记录并非物理删除,而是逻辑删除,通过在删除位图中添加标记记录被删除的记录。在SQL Server查询时,除了查询行组和delta存储的数据,还需要查询删除位图,将三者结果进行合并。



当进行索引重建或重组时,列存储才会进行物理删除。在更新列存储时,不是物理更新,而是删除记录后插入新的记录。



列存储小结:包括压缩的列存储行组、行存储delta存储、以及存储被删除记录信息的删除位图。从SQL Server 2016开始,可以创建列存储索引的同时,创建传统行存储的非聚簇索引(NCI)。列存储本身不排序,查询特定记录时需要全表扫描,插入操作性能较好,但删除和更新操作的代价较大,特别是对于大型表。



为了确定某些表是否适合创建列存储索引,可以参考以下条件:表需要足够大,至少100万条记录,且大部分SQL查询为报表类查询,update和delete操作较少。可以通过查询DMV sys.dm_db_index_operational_stats来判断表是否适合创建列存储索引。



在SQL Server 2019中,可以使用sp_estimate_data_compression_savings预估创建列存储索引后的压缩率。快速加载数据到已创建列存储索引的表中,可以采用外部文件批量导入、从其他表导入数据或使用SSIS,SQL Server会自动使用并行操作。



列存储的性能提升来自压缩、批量模式、段消除和并行处理。批量模式允许一次处理大量数据,适合大数据量的数据仓库。段消除和列消除自动过滤掉不相关的行组和段,提高查询效率。对于汇总函数,如SUM、AVG等,列存储支持批量处理,减少数据传输量,提高性能。



列存储的维护包括碎片处理。列存储的碎片类型有两种:delta存储碎片和行组碎片。delta存储碎片超过10个时需要维护,行组碎片超过10%时,需要进行物理删除处理。



从SQL Server 2016开始,可以使用ALTER INDEX命令中的自合并(self merge)和合并(merge)操作来维护列存储索引。自合并操作在行组的逻辑删除记录超过10%时,会物理删除这些记录;合并操作将两个行组的记录合并,当它们的总记录数不足100万时。



列存储与内存数据库技术结合,应用于实时操作分析场景。这类场景结合了OLTP和数据仓库的特点,使用内存表和磁盘表进行数据存储,分别适用于OLTP和报表查询。内存表和列存储索引共同存储数据,提高查询性能和数据处理效率。在该场景中,需要大量内存空间,而实时操作分析可以利用这两种技术的优势,实现高性能的数据处理。

热点内容
恢复微软默认激活服务器地址 发布:2025-09-21 11:03:01 浏览:36
阿里云服务器怎么重置 发布:2025-09-21 10:53:11 浏览:109
c访问hbase 发布:2025-09-21 10:42:09 浏览:215
java设计报告 发布:2025-09-21 10:32:40 浏览:646
tira压缩 发布:2025-09-21 10:19:37 浏览:544
对讲机频道加密 发布:2025-09-21 10:17:01 浏览:879
刷视频脚本编写 发布:2025-09-21 10:05:38 浏览:339
linuxtargz解压命令 发布:2025-09-21 10:05:28 浏览:455
企业网站云服务器怎么选 发布:2025-09-21 10:05:28 浏览:733
二胎需要存储脐带血吗 发布:2025-09-21 09:43:05 浏览:899