Oracle 11g中一种提高查询速度的新技术

2009-03-23 02:40涂利明
计算机时代 2009年1期
关键词:数据仓库语句速度

涂利明

摘要:介绍了Oracle 11g中一种提高查询速度的新技术——Server Result Cache。一系列的实验测试表明,ServerResult Cache技术通过直接共享SQL执行后的结果,使相同的SQL语句只需执行计算一次,再次执行时可直接得到结果,无须重新计算,从而提高了查询速度。

关键词:查询速度;Server Result Cache;Oracle 11g

0引言

随着计算机技术,特别是数据库技术的发展,越来越多行业开始建设数据仓库系统。由于数据仓库数据量非常大,查询速度慢是数据仓库系统普遍存在的问题,制约着其进一步发展。为此,很多专家学者对如何提高数据查询速度进行研究,提出了许多解决方法,但实际应用证明这些方法只能在一定条件下提高查询速度。

1提高查询速度的常见方法

数据库结构在很大程度上影响着数据库系统的性能。在数据库结构设计合理的情况下,提高数据库查询速度的方法主要可以分为两大类。一类是提高硬件的运行速度,如增大数据库服务器的内存,提高CPU的运算速度以及I/O速度等。第二类是通过软件技术来提高查询速度,这也是专家学者研究的重点。其中最具代表性的有:

索引技术索引是对数据库表中一个或多个列的值进行排序的结构,可以利用索引快速访问数据库表中的特定信息。索引技术优点是可以加快访问数据的速度,但也有占用磁盘空间,并且降低添加、删除和更新行的速度的缺点。

SQL语句优化技术对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍。SQL语句优化技术研究的就是如何写出高质量的SQL语句,提高系统的可用性以及查询的速度。

物化视图技术研究表明数据仓库中大量的查询是针对部分数据进行,因此,可以针对这部分数据进行预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。Oracle的物化视图技术就是提供了这种功能。

2Server Result Cache

数据库中对于同样的查询操作,如果能在多个process或者session间共享结果,对于性能优化自然是非常有帮助的。从Oracle 7开始提供的share pool技术,使得同样的SQL语句只需解析一次,就能多次执行,有效地减少了多个session执行相同SQL语句所消耗的时间,提高了查询速度。到了Oraclellg,采用一种全新的技术——Server Result Cache,该技术能直接共享SQL执行后的结果,使得相同SQL语句只需执行计算一次,以后再次执行时就直接得到结果,无须重新计算。这一技术是革命性的,在Oracle白皮书上宣布,对于读频繁的系统,利用该技术,甚至有可能提升系统性能200%。

Server Result Cache不仅仅能缓存整个查询的结果,也能缓存查询中某部分操作的结果,比如缓存一次排序的结果,就可以避免再次执行时的排序操作。对于一些比较耗资源的查询操作,缓存结果能很好地提升性能。

3Server Result Cache测试

为了测试oracle llg启用Server Result Cache后查询的性能,进行了两组不同的实验。这两组实验硬件环境相同,测试数据也相同,不同的只是Oracle的版本(见表1)。

每组实验执行两次SQL语句,每次执行相同SQL语句select count(*)from p_routesheet。在第2组实验中启用了Oracle 11g的Server Result Cache新技术。第1组实验和第2组实验的结果分别如表2、表3所示。

consistent gets和physical reads是两个反映Oracle数据库查询性能的重要指标。从表2中可以看出第一次执行该SQL可以看到consistent gets和physical reads大致相同,第2次执行同样查询时,由于数据Cache在内存中,physical reads会减少到0,但是consistent gets变化不大。

在表3中可以看出第1次执行SQL语句,所得到的结果和第1组实验中第一次执行SQL语句的结果相差无几,但在第2次执行的SQL语句,由于启用了Oracle llg的Server ResultCache新技术,结果不仅physical reads减少到0,而且consistentgets也减少到0。这也就是说在第2次执行SQL语句时Oracle不再需要重新执行SQL查询,而是直接访问第1次执行后得到的结果。

4结束语

随着数据仓库系统应用越来越广泛,如何更快地提高海量数据的查询速度一直都是该领域的一个研究重点。本文对Oracle llg的一种能快速提高查询速度的新技术——ServerResult Cache进行了实验测试,实验结果表明采用ServerResult Cache新技术后,再次执行同样的SQL语句,physicalreads和consistent gets都减少到0。这也就是说Server ResultCache技术能直接共享SQL执行后的结果,使相同SQL语句只需执行计算一次。以后再次执行时就直接得到结果,无须重新计算,从而提高了查询速度。

猜你喜欢
数据仓库语句速度
速度
重点:语句衔接
基于数据仓库的住房城乡建设信息系统整合研究
分布式存储系统在液晶面板制造数据仓库中的设计
探析电力系统调度中数据仓库技术的应用
比速度更速度——“光脑”来了
基于数据仓库的数据分析探索与实践
如何搞定语句衔接题
作文语句实录
秒速5厘米