王志鹏 孙萌
摘 要:数据仓库中存贮着大量的历史数据,主要供企业决策分析之用,所涉及的数据操作主要是数据查询。因此,提升数据仓库的查询效率,优化查询方法是提升数据仓库应用的关键问题之一。本文主要介绍了数据仓库的查询性能问题,介绍目前主流的查询优化方法,并重点介绍了索引技术和分区优化方法。
关键词:数据仓库;查询优化;索引;分区优化
1 引言
数据仓库是为企业所有级别的决策制定过程提供支持的所有类型数据的战略集合。数据仓库是由单个数据存储,出于分析性报告和决策支持的目的而创建。作为商业智能市场的三大支撑技术之一,数据仓库为企业提供需要业务智能来指导业务流程改进和监视时间、成本、质量和控制。数据仓库中存贮着大量的历史数据,主要供企业决策分析之用,所涉及的数据操作主要是数据查询。因此,提升数据仓库的查询效率,优化查询方法是提升数据仓库应用的关键问题之一。本文主要介绍了数据仓库的查询性能问题,介紹目前主流的查询优化方法,并重点介绍了索引和分区优化方法。
查询性能对于数据仓库来说,是最重要的性能指标。无论是在生产系统,还是在POC(Proof Of Concept)性能测试来说,优秀的查询性能都能为数据仓库的应用带来高效的工作效率。OLAP涉及到大面积的数据查询,如何满足OLAP的快速响应,是数据仓库性能优化的核心。
针对数据仓库查询的复杂性特点,目前主要的查询优化方法主要包括物化视图、近似查询、索引技术、分区优化等。本文重点介绍索引技术和分区优化。
2 索引技术
目前数据仓库中常用的索引结构有三种,β-树索引、R-树索引和位图索引。
2.1 β-树索引
β-树是一种动态调节的平衡树,它引入了一种效率很高的外查找机制,比较适合于字段值分散且重复值少的字段。一个β-树索引包含一个由高层结点和相继低层结点组成的层次结构。在β-树索引中有两类结点:分支结点,简单地指向相应的低层结点;叶子结点,存放β-树方法的实际内容。
β-树结构的特点是简洁性、易维护性及支持具有高可选择性列值的高速检索。这种方法适合于对索引列值等值查找和范围查找的查询。
2.2 位图索引
位图索引与β-树索引相反,用于索引列的可能取值比较少,即低基数的情况。在位图索引中,不是以行标识为指针说明各条记录,而是应用“位”的概念直接确定索引列的值。“位”是位图索引的核心,每一位与索引列可能的取值之一相对应。 在索引列的可能取值数目小于32时,采用位图索引可以节省存储空间;索引列的可能取值数目大于32时,位图索引节省存储空间的优势就不存在了。
2.3 R-树索引
R-树索引支持多维数据建立索引,是一种面向多维空间对象的索引结构,R-树内部结点中的键值则是多维空间中的一个区域,因此不仅要存储行标识信息,同时要存储被索引对象的边界信息。因为R-树索引是多维的,所以常常采用这种方法为OLAP数据建立索引。
基于R-树来存储组织数据仓库中的聚集数据,即实物化视图,有效地支持各种OLAP查询。根据所有的维建立的R-树索引可以较好地满足多维空间对象查询需要,而利用它为多维数据建立索引仍有较大的不足。
2.4 索引优化
不论是数据库还是数据仓库, 索引建立的好坏直接影响访问效率。
β-树只在索引是高基数(基数是一个表列中不同值的个数与整个表中的行数的比值)的时候才有价值,而在数据仓库中构造和维护的代价高。因此β-树索引对于简单查询比较有效,而在数据仓库的复杂查询中, 往往是无能为力的。
在数据仓库中采用位图索引技术可以使查询处理和索引存取的效率提高许多倍。在数据仓库环境中,位图索引在建立和维护位图索引时间和空间代价方面都优于β-树索引,同时 位图索引可以彼此一起工作达到减少搜索空间的目的。但随着基数的增加, 位图索引仍然存在不可克服的缺点。因此如何高效地实现建立数据仓库索引,提高查询性能,需要进一步研究和探讨的问题。
3 分区优化
目前数据仓库分区优化的方法得到广泛应用。关系型数据仓库和分析服务多维数据集都支持数据分区。分区是通过创建单独的物理表(例如为每个月的数据创建一个表)并且定义一个成员表的联合视图来实现的。在数据仓库中,事实表,索引表,维度表分处于三个不同的表空间当中,便于并发操作。分区的优点是可以大大缩短查询时间,减少加载时间,改善数据库的可维护性,同时有效解决从活动数据库中删除旧数据时出现的数据修剪问题。
数据仓库分区存在一些限制条件:表或索引的所有分区必须具备相同的逻辑结构,但每个分区的物理属性可以不同,每个分区对象的所有分区必须存储在数据库块容量相同的表空间中,但一个表的不同分区索引可以防止不同块大小的表空间中。
[参考文献]
[1]赵志升,李静,叶云龙.数据仓库模型设计中的索引策略研究[J].电脑开发与应用, 2010年01期.
[2]黄金钗,杨科华,陈楠楠.数据仓库索引启发式查询优化方法[J].计算机工程与应用,2010年03期.
[3]寿挺,肖善钟,陆翔.一种采用实时分区实现实时数据仓库的方法[J].电力信息化, 2009年04期.
[4]徐东海.数据库中分区索引技术研究[D].长沙理工大学,2012.