軟軟解析

     周大師的書中說軟軟解析的核心原理就是通過設置session_cached_cursors參數,將某個會話中常用的SQL放入UGA的會話緩衝區去,當會發發起相同的SQL時,可以快速的從UGA取得CURSOR的信息,從而減少共享池的爭用,當一個CURSOR被解析3次以上(包括3次)時就會被放入到UGA會話緩衝區中。下面是實驗過程:

 

SQL> select * from v$version where rownum<2;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit

 

首先查詢出LIBRARY CACHE LATCH的內存地址如下:

SQL> select 'oradebug poke 0x' || addr || ' 1 0x01'
  2  from v$latch_children where name='library cache';

'ORADEBUGPOKE0X'||ADDR||'10X01'
---------------------------------------
oradebug poke 0x0000000077947860 1 0x01

 

測試一:library cache latch對硬解析的影響:

會話1:用oradebug工具手動的持有library cahe lacth

SQL> oradebug setmypid
Statement processed.
SQL> oradebug poke 0x0000000077947860 1 0x01
BEFORE: [077947860, 077947864) = 00000000
AFTER:  [077947860, 077947864) = 00000001

會話2:進行硬解析直接掛起,如下:

SQL> select  count (*)  from dba_ojbects;--直接掛起

 

 

------------------------------------------------------------------------------------

測試二:library cache latch對軟解析的影響:

會話1:

先進行硬解析,如下:

SQL> select count(*) from dba_objects;

  COUNT(*)
----------
     50611

會話2:

用oradebug工具手動的持有library cache lacth

SQL> oradebug setmypid
Statement processed.
SQL> oradebug poke 0x0000000077947860 1 0x01
BEFORE: [077947860, 077947864) = 00000000
AFTER:  [077947860, 077947864) = 00000001

會話1:

SQL> select count(*) from dba_objects;

  COUNT(*)
----------
     50611

SQL> /----仍然掛起

---------------------------------------------------------------------------------------

 

 

測試三:library cache latch對軟軟解析的影響:

 

會話1:

先執行3次解析,那麼第四次就會進行軟軟解析,如下:

 

SQL> select count(*) from dba_objects;

  COUNT(*)
----------
     50611

SQL> /

  COUNT(*)
----------
     50611

SQL> /

  COUNT(*)
----------
     50611

用oradebug工具手動的持有library cahe lacth

SQL> oradebug setmypid
Statement processed.
SQL> oradebug poke 0x0000000077947860 1 0x01
BEFORE: [077947860, 077947864) = 00000000
AFTER:  [077947860, 077947864) = 00000001

 

會話1:

在進行第4次解析的時候可以繼續執行SQL,並且不在需要library cache latch,從而驗證了文章開頭說的話。

 

注:oradebug工具的使用:http://blog.csdn.net/tianlesoftware/article/details/6525628

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章