SQL Server 2012的列存储索引技术有效运用

2017-04-14 15:43王玉银
电子技术与软件工程 2017年6期
关键词:压缩算法批处理列式

若想为加强数据库查询的性能,可通过SQL Server 2012 在表中建立列式的索引,提高工作的效率。文章主要分析了列存储缩影存储的原理,探讨列存储索引应用局限和优势,以便相关用户能够在列式索引下挖掘各种交互式数据,进而获取既有数据商业价值。

【关键词】SQL Server 2012 列存储 索引技术 有效应用

1 前言

SQL Server 2012主要是应用列式的存储进行索引,这种方式可以提升数据库查询的效率。通过结合其他的新功能与全新索引,在特定应用的场景下,能够大幅度提高数据库查询的性能,尤其一些决策与支持类查询,能够提高10倍及以上的效率。数据查询性能提升,主要是经过SQL Server的管理界面以及T-SQL的语句实现,所以能够和SQL Server Reporting Services全部报表的解决方案兼容。

2 分析行存储以及列存储优势与缺陷

列存储的索引可以存储与分组每一列数据,再和所有列进行联接,组成完整的索引,这种索引方式与传统索引不一样,传统的索引是存储与分组每行数据,再对所有行进行联接,组成索引。

2.1 列存储和行存储

在SQL Server系統中,Page属于数据存储基本的单位,数据行为实际数据存储的单位,在出现Page Header以后,就开始存储于Page中,于Page中根据行进行存储的记录方式即为行存储。如果数据是根据单列并不是多行来持续存储,那就是列存储。

2.2 行存储缺陷

从图1中能够看出,在SQL Server 处理查询数据时,会将全部的索引页都提取出来,这样就会提取到无用部分,话句话说,会对全部列记录进行读取,不需要的也被读取。如果读取了不需要数据,不仅会导致内存被大量浪费,而且会增加I/O,严重影响了系统整体的性能。

2.3 列存储优势

从图一中不难看出,磁盘每一个Page只可以对单列数值进行存储,并不能存储整行数值。所以应用压缩算法,效率会比较高,主要因为压缩算法可以作用在同类型数据上。如:假设一张三列数据表,从左至右分别是int与varchar、bool的类型,该表一共有一百条记录。对int类型第一列的数据而言,使用压缩的算法比较容易,并且压缩率也相对较高。简言之,无需对该表全部列进行访问,只需要访问需要子集,这样不仅能够降低磁盘I/0,而且可以提高缓存,提升磁盘存储的利用率。

3 列存储局限和特征

3.1 SQL Server的列存储技术特征

数据分裂的格式:对每个列数据实时存储与分组。通过SQL Server的查询与处理以后,能够应用新数据进行布局,同时对查询执行的时间进行改进。

提高查询结果的速率,列存储的所以容易因为下述因素更快生成相应的结果。仅需读取所需要列,所以从磁盘读至内存,再从内存到处理器的缓存,这样可以减少数据量;列经过高度的压缩,在很大程度上减少了移动字节数与读取字节数;很多数据的查询不会涉及到表中全部列,所以大多数列并不会进入到内存中,将其和出色压缩的方法结合,能够对缓冲池的使用率进行改善,降低总的I/O;高级查询的执行技术可以简化处理列块,降低CPU的使用率。

3.2 列存储的索引局限性

所含列数需要控制于1024以内;不能聚集,只可以将列存储聚集以后才可以使用;并不是唯一的索引;不可以建立索引视图或是视图;不涵盖稀疏列;不可以作为外键或是主键;不可以通过ALTER INDEX的语句进行更改。需要在删除以后重新建立列存储的索引;不可以通过INCLUDE的关键字进行创建;不可以含有DESC或是ASC的关键字,按照压缩算法排序列存储的索引,不可以在索引中排序,可以根据搜索算法排序索引中数值;不可以使用或是保留传统索引方法所统计的信息;不能对里存储的索引表进行更新。

分析内存受限情况:目前,类存储的处理根据内存中的处理需要实施了相应的优化。应用SQL Server能够完善若干的机制,在很大程度上改善大多数的数据结构或是数据使用情况,尤其在内存不足的时候依然可以保证数据不会外溢。若内存限制比较严重,在处理的过程中,需要应用行内存进行处理。在部分实例中,会选取列存储的索引当做访问的方法,然而内存不足时,无法生成相应数据的结构,就会先从操作列存储开始,再默认较慢代码的路径,在数据查询时,就会因为内存受到严重限制,进而降低了性能。

列存储的索引生成要求内存量一般如下: 8 MB×索引中列数×DOP/并行度,一般情况下,内存的要求会伴随字符串列比例的提高而不断地增加,所以需要减少DOP ,以降低列存储的索引生成列所需内存。部分表达式计算比传统表达式的计算效率高:在应用列存储的索引时,应该应用批处理的模式对部分常见的表达式进行计算,并不是重复的根据某一特定模式计算。应用列存储的索引不仅可以带来计算效率快的优势,而且可以加速批处理与数据查询的效果,并且在批处理时,也不会启动每个查询的运算符。此外,应用列存储的索引并不支持SEEK运行:若查询需要返回行一部分,优化器则不会选取列存储的索引,如needle-in-the-haystack的类型查询。若应用表提示的FORCESEEK,优化器就可以不需要考虑到类存储的索引。同时类存储的索引不可以结合以下的功能:行压缩、页与vardecimal的存储格式;复制;跟踪更改;变更数据的捕获;文件流。

4 结论

总而言之,SQL Server 2012提高的相关的查询功能、列存储索引,在技术方面取得突破性发展,能够给数据库的查询提供性能的优势。并且企业最终用户能够应用熟悉报表的工具进行查询,旨在较短时间里获取数据商业的价值,使得企业变成主要获益者。

参考文献

[1]江凌,杨平利,杨梅.基于ADO.NET技术访问SQL Server数据库的编程实现[J].现代电子技术,2014,18(08):95-98.

[2]王蕊.基于ObjectARX和SQL Server的AutoCAD图形数据存储[J].电子测试,2016,21(12):87-88.

[3]张华东,邵秀丽,吴军.SQL Server数据库到HBase数据库的模式转换和数据迁移研究[J].智能计算机与应用,2016,6(05):24-30,34.

作者简介

王玉银(1982-),女,山西省芮城县人。硕士学位。讲师,计算机专任教师。研究方向为计算机应用技术。

作者单位

桂林理工大学博文管理学院信息工程学院 广西壮族自治区桂林市 541006

猜你喜欢
压缩算法批处理列式
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
基于参数识别的轨道电路监测数据压缩算法研究
更正声明
每筐多装多少
PMU数据预处理及压缩算法
基于PSD-BPA的暂态稳定控制批处理计算方法的实现
让课堂焕发创造活力
二年级万以内数的加法和减法单元自测题