`

session_cached_cursors与open_cursors

 
阅读更多

open_cursors 参数控制单个session 打开的cursor的数量。

v$open_cursor 是所有session(打开的cursor)的总和。

session_cached_cursors 指一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能,是软软解析的关键所在。

设置pga端的cache list的长度,当session_cached_cursors设置为0时,pga的cache list长度为0,这时候当sga中的cursor关闭的时候它相关的library cache handle的lock位被清0,从v$open_cursor里看不到这个被关闭的cursor,它服从于shared pool的lru机制,当shared pool需要新的buffer空间时,它将会被flush出shared pool。当session_cached_cursors设置为非0值时,pga的cache list长度为session_cached_cursors值的大小,同时pga cache list将会保留一份拷贝,这时候即使sga中的cursor关闭的时候它相关的library cache handle始终被加了null mode lock,当shared pool空间紧张时library cache handle始终将会被保留在shared pool中,而新的应用访问这个cursor的时候会直接去自己的pga cache list里面搜索。

1 > opened cursors current (当前单个session打开的cursors数量)

2 > parse count (hard) (当前session硬解析次数)

3 > parse count (total) (当前session解析总次数)

4 > session cursor cache count (设置session_cached_cursors参数后,"相同"sql被解析3次后被cache在sessioncursor cache中的数量

5 > session cursor cache hits (软软解析的次数 a "softer" soft parse)

6 > 手工计算一下软解析次数parse count (total) - session cursor cache hits - parse count (hard)= parse count(soft)

如何正确设置session_cached_cursors参数

正确设置open_cursors和'session_cached_cursors' 可以减少sql解析,提高系统性能,那么,如何正确设置'session_cached_cursors'这个参数呢?我们可以把握下面的原则:

1、'session_cached_cursors'数量要小于open_cursors,设置方法:

open_cursors:该参数含义是同一个session同时打开最多在使用的游标数。

在Oracle10.2.0.1.0版本中默认为300;

session_cached_cursors:session_cached_cursors就是说的是一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能。(绑定变量是解决硬解析的问题),软解析同硬解析一样,比较消耗资源.所以这个参数非常重要。

在Oracle10.2.0.1.0版本中默认为20

在oracle 9.2.0.1.0里修改会报下面的错,这是9i版本的一个bug,可先在init文件里改好,再修改spfile文件。

SQL> alter system set session_cached_cursors=20 scope=spfile;

ORA-02096: 此选项的指定初始化参数不可修改

2、要考虑共享池的大小

3、使用下面的sql判断'session_cached_cursors' 的使用情况。如果使用率为100%则增大这个参数值。

4、调整参数后进行测试。

使用session cursor caching功能后,与soft parsing基本做相同的工作,但因为减少检索库高速缓冲区的时间,因此有助于减少library cache 锁存器争用。Session cursorcaching 功能上一个注意事项是此功能只在会话级上有效。因此每次执行 sql 过程中,如果要进行logon和logoff时,虽然使用此项功能但是并不能从中受益。所以应该尽量利用连接池技术,维持会话连接,这样才有助于提升性能。


整理自网络


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics