Execute to Parse% 及open_cursors,session_cached_cursors

tolywang發表於2010-10-09

Execute to Parse : 

SQL語句執行與解析的比率。如果某條新的SQL語句經 過一次解析然後執行,且再也不在同一個session中執行的話,那麼比率為0,這個比率應該越高越好。比如12.26%說明,同 一個session中執行的SQL語句中只有12.26%的SQL是已經解析好了的(不需要再次解析)。說明DB中新的SQL語句相對較多。 

計算方式:      Execute to parse=round(100 * (1-Parses/Executions),2),    如果parse次數大於executions,可能會導致此值為負數,對性 能會有影響 。 這個值越接近100%越好 (即Parses/Executions  越接近0,也即幾乎所有SQL都是已經解析過的,只要執行就好了,當然這是理想狀態)。 

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

如何正確設定session_cached_cursors引數

正確設定open_cursors和'session_cached_cursors'  可以減少sql解析,提高系統效能,那麼,如何正確設定'session_cached_cursors'  這個引數呢?我們可以把握下面的原則:
1、'session_cached_cursors'  數量要小於open_cursor
2、要考慮共享池的大小
3、使用下面的sql判斷'session_cached_cursors'  的使用情況。如果使用率為100%則增大這個引數值。

SELECT   'session_cached_cursors' parameter,
         LPAD (VALUE, 5) VALUE,
         DECODE (VALUE,
                 0, '  n/a',
                 TO_CHAR (100 * used / VALUE, '990') || '%')
            usage
  FROM   (SELECT   MAX (s.VALUE) used
            FROM   v$statname n, v$sesstat s
           WHERE   n.name = 'session cursor cache count'
                   AND s.statistic# = n.statistic#),
         (SELECT   VALUE
            FROM   v$parameter
           WHERE   name = 'session_cached_cursors')
UNION ALL
SELECT   'open_cursors',
         LPAD (VALUE, 5),
         TO_CHAR (100 * used / VALUE, '990') || '%'
  FROM   (  SELECT   MAX (SUM (s.VALUE)) used
              FROM   v$statname n, v$sesstat s
             WHERE   n.name IN
                           ('opened cursors current',
                            'session cursor cache count')
                     AND s.statistic# = n.statistic#
          GROUP BY   s.sid),
         (SELECT   VALUE
            FROM   v$parameter
           WHERE   name = 'open_cursors') 

 

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

參考

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-675607/,如需轉載,請註明出處,否則將追究法律責任。

相關文章