究竟是否需要升级到Oracle 11g?
2008-08-28 12:45:09 来源:WEB开发网核心提示: 因此,Oracle给你提供了三种不同的结果集缓存级别:数据库级别,究竟是否需要升级到Oracle 11g?(4),通话级,和查询级,或者结果是通过扫描表的查询得到,Result Cache是一个好的功能特性,这可以让你指定结果集缓存到上述哪种级别,对于这些级别的选择
因此,Oracle给你提供了三种不同的结果集缓存级别:数据库级别,通话级,和查询级。这可以让你指定结果集缓存到上述哪种级别。对于这些级别的选择,有利有弊,除非你已经彻底进行了数据库级别的测试,并且正确的知道将会出现怎样的结果集,那么我建议坚持选择查询或者通话级。在数据库级,所有的查询结果集都会被缓存,包括那些不需要的结果集。并且在缺省的情况下,结果缓冲器只分配到缓冲器的一小部分,如果你不去扩大分配的空间,你是不可能看到那么多结果集的。
Oracle有一个执行得非常好Result Cache,它能准确执行你交给它的任务。在我的初始测试中,查看结果集没有任何问题。我测试了几个查询进行摸索,的确看到查询时间有了很大的改进。但是当我大幅增加查询的数量,并且对查询设置参数,我就看不到初始测试中的性能提高的变化了。这并不是没有预料到的,该功能特性也并不是没有缺点。我要说的是在你将此功能应用于实际时,你需要仔细计划测试的数量,并且测试充分。
不言而喻,这个功能特性主要目的是用来提高磁盘受限(disk-bound)系统的性能的,并不是用于内存受限(memory-bound)系统的。如果你已经经历过内存不够带来的压力,在一个已经是受约的系统还划出一个缓冲器只会使得情况更糟糕。我想指出:这个功能特性对于处理OLTP工作负荷并没有多大的帮助。如果你使用它来支持工作负荷,就要小心你缓存的查询结果集。很容易忘掉的是即使是64位系统也有内存极限,对于内存资源来说,高速缓存200万行的结果集或许不是最好的用途。
我喜欢使用Result Cache来对付那些麻烦的查询,如有Join,或者结果是通过扫描表的查询得到。Result Cache是一个好的功能特性,几乎能让你做你所希望的事情。
赞助商链接