物化视图在移动数据库查询优化中的应用*
2013-01-10刘晓娜杜永文
刘晓娜,杜永文
(1.甘肃联合大学 电信学院,甘肃 兰州 730010;2.兰州交通大学 电信学院,甘肃 兰州 730070)
1 移动数据库中计算环境的特点
随着数据库数据量的不断增大,数据库的性能优化越来越凸显其重要性.要合理的提高移动数据库性能,首先要对移动计算环境和移动数据库有所了解.在移动计算环境下,用户可以携带移动设备自由移动,通过移动通信网络保持与固定节点和其他移动节点的连接.
与传统环境相比,移动计算环境具有以下特点:
①用户的移动性.用户可以在移动过程中进行各种操作.②网络带宽的不对称性.下行(服务器到移动端)带宽大于上行(移动端到服务器)带宽,移动终端甚至可以在不能发送信息的情况下仍可以接收到服务器发送给它的信息,下行带宽可达10MB/S.③频繁断接.移动端可能因为用户主动关机或网络不稳定而间歇性的入网、断接.
另外,移动计算中的使用设备也有其特殊性.
①电源能力有限.移动设备电源通常只能维持4~6小时.②计算能力有限.目前移动设备最常用的主频是400MHz左右的处理器,不适合运行需要大计算量的应用.③存储能力有限.移动设备的内存和硬盘容量相对较小,有些设备甚至以SD卡做为存储设备,因此数据的存储要充分利用和优化内存资源,提高系统性能.④屏幕面积小.这就需要我们优化用户界面,既要提供丰富的功能选择,又要方便用户的浏览和操作.
移动环境的特点以及移动设备的资源有限性是我们在做优化时考虑的主要因素.为了减少查询延迟现象的发生,客户端的查询应尽可能少的向服务器发送请求.在TCP和socket机制中,一次大数据的请求传输比多次小数据的请求传输速度要快.除了优化网络处理,还应该尽量使客户端的代码精炼高效,要尽量减少应用对内存的占用.
2 物化视图
视图是数据库中的一个重要概念,实际上存在的只是它的脚本,当调用代码时才访问数据表进行查询,还可以把对远地数据库的访问封装在视图中,使之对上层应用程序透明,增加移动访问中安全性.而物化视图是oracle数据库提供的一种重要视图方式,常用于数据库的容灾,它并不是传统意义上的虚拟视图,是实体化视图,和表一样可以存储数据、查询数据;具体使用过程中可以预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果.物化视图对应用透明,增加和删除物化视图不会影响应用程序SQL语句的正确性和有效性.尤其是在移动网络数据库中,主备数据库数据同步一般通过物化视图实现,主备数据库通过data link连接,在主备数据库物化视图时进行数据复制.当主数据库垮掉时,备数据库接管,实现容灾.这种特性使得物化视图能很好地适用在不稳定的移动计算环境.
3 优化方法和具体过程分析
创建物化视图时可以指定多种选项,主要选项如下:
(1)创建方式(Build Methods):Build Immediate和Build Deferred两种.Build Immediate是在创建物化视图的时候就生成数据,而Build Deferred则在创建时不生成数据,以后根据需要再生成数据.
(2)查询重写(Query Rewrite):查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据.
(3)刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步.刷新的模式有两种:On Demand和On Commit.On Demand指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新.
(4)排序:在建立物化视图的时候可以指定Order by语句,使生成的数据按照一定的顺序进行保存,以增快查询速度.
(5)物化视图可以进行分区,此方法适用于按地域查询的情况,如采用基于分割的地址更新策略时,由位置服务器维护的移动用户对象包含以下数据成员和方法:
分割集合——记录MSS的分割情况,例如{Cell1,Cell2},{Cell3,Cell4,Cell5};
LOC——记录移动用户最近报告的地址(无线单元的ID),例如Cell1;
ERR——移动用户当前所在的分割,例如,若LOC=Cell1,则ERR={Cell1,Cell2};
loc()——一个方法,用于返回该用户的实际地址,即上面介绍的地址查询过程.
例如在移动查询的应用中,有各种各样涉及地址的查询,“请寻找一家校园附近的超市”,“查找X,Y,Z,这三人都在同一条公路上,且Y在X与Z之间”,等等.为不失一般性,以具有三个主键的数据表为例.表1是“超市分布统计表”,其中超市名称、地理位置、超市状况是主键.
表1 超市分布统计表
为该数据表建立主键刷新方式的物化视图:
SQL>CREATE MATERIALIZED VIEW LOG ON超市分布统计表with primary key;
之后,对按地址查询发出请求的用户建立表进行增加、删除、更新操作,
SELECT x1,x2,…,xn FROM Users
WHERE(x1.loc=l1 ∧…∧ xn.loc=ln) ∧ C(l1,…,ln) ∧ W(x1,…,xn)
其中C(l1,…,ln)是关于地址l1,…,ln的n元约束条件,而W(x1,…,xn)是关于对象x1,x2,…,xn非地址属性的n元约束条件,Users是所有移动用户的集合.
“用户-超市情况统计表”的物化视图日志“mlog$一统计表”内容如表2所示.
表2 物化视图-“mlog$统计表”
核心代码如下:
Create materia1ized view dzz_zhenchayuanshi_view/*
bui1d immediate refresh fast on commit as
se1ect dzz_zhencha_comm.ph dzz_zhencha_comm.
source dzz_zhencha_comm.ptlx
dzz_zhencha_comm.ptmcdzz_zhencha_dyna. fw
dzz_zhencha_dyna. time
from dzz_zhencha_comm dzz_zhencha_dyna where
dzz_zhencha_comm.biaozhi=dzz_zhencha_dyna.biaozhi
本文重点论述了物化视图技术在提高oracle查询速度方面所起的作用,这也是数据库前台查询常用的优化手段,在实际工程应用上可操作性比较强.经按地址查询验证,引入物化视图对移动数据库中尤其是动态变化的数据在查询时速度可以有很大的提高.
参考文献:
[1]Benjamin C.M. Fung,Privacy-preserving data publishing for cluster analysis[J],Data & Knowledge Engineering,2009(1),552-575.
[2]孙江萍.移动数据库系统查询优化及自适应管理技术研究[D],广州:东南大学,2007.
[3]尹萍.SQL Server数据库性能优化[J].计算机应用与软件,2005(8).
[4]王振辉.SQL查询语句优化研究[J].计算机应用,2009(11).