使用SQL Server实现稀疏列存储策略(sqlserver稀疏列)

在时间序列数据库中,由于数据记录的实时分布及数值的变动,存储大量的列会占用大量的空间 ; 由于实时更新,且经常比较旧的与新的数据进行对比,运算速度会变慢,因此提出了稀疏列存储策略。

它是一种用来避免空间浪费和提高查询效率的技术,主要思想是将多行常规数据supercolumns 进行展开和合并存储,以每行的实际数据为列并存储每行的标识位,结构上充分发挥存储器的空间压缩优势,极大地减少存储空间使用量,从而缩减查询时间。

SQL Server使用sp_addextendedproperty的命令来实现在表中稀疏列的存储,例如有以下列名:

valueA,valueB,valueC ,valueD

创建valueA列

CREATE TABLE [TestTable] (

[id] varchar(32)null,

[valueA] int Not NULL

);

将valueA 标记为稀疏列

exec sp_addextendedproperty @name = N’MS_Description’,

@value =N’Sparse Column’,

@level0type =N’SCHEMA’, @level0name =N’dbo’,

@level1type=N’TABLE’, @level1name=N’TestTable’,

@level2type=N’COLUMN’, @level2name=N’valueA’

然后分别为valueB,valueC ,valueD标记为稀疏列。

exec sp_addextendedproperty @name = N’MS_Description’,

@value =N’Sparse Column’,

@level0type =N’SCHEMA’, @level0name =N’dbo’,

@level1type=N’TABLE’, @level1name=N’TestTable’,

@level2type=N’COLUMN’, @level2name=N’valueB’

exec sp_addextendedproperty @name = N’MS_Description’,

@value =N’Sparse Column’,

@level0type =N’SCHEMA’, @level0name =N’dbo’,

@level1type=N’TABLE’, @level1name=N’TestTable’,

@level2type=N’COLUMN’, @level2name=N’valueC’

exec sp_addextendedproperty @name = N’MS_Description’,

@value =N’Sparse Column’,

@level0type =N’SCHEMA’, @level0name =N’dbo’,

@level1type=N’TABLE’, @level1name=N’TestTable’,

@level2type=N’COLUMN’, @level2name=N’valueD’

在查询SQL Server中的稀疏列时,需要使用“columnproperty”函数,用法如下:

SELECT *

FROM sys.columns

WHERE

[name] = ‘valueA’

and COLUMNPROPERTY([id], [name], ‘IsSparse’) = 1

使用以上代码可以查询到valueA是否是稀疏列,如果查询结果为1,则说明该列已被设定为稀疏列。

因此,使用SQL Server实现稀疏列的存储需要按照以上步骤进行:

1.首先创建需要设定为稀疏列的列;

2.使用sp_addextendedproperty命令将需要设定为稀疏列的列标记为稀疏列;

3.使用columnproperty函数查询指定列是否为稀疏列。

使用SQL Server实现稀疏列存储策略可以说明,这是一种有效的解决方案,可以有效地服务于时间序列数据库,以节省空间和提高查询性能。


数据运维技术 » 使用SQL Server实现稀疏列存储策略(sqlserver稀疏列)