open_cursors與session_cached_cursors
open_cursors: 該引數的含義是一個session同時開啟最多在使用的遊標數
session_cached_cursors: 說的是一個session最多可以快取多少個cursor, 讓後續的SQL語句不再開啟遊標,從而避免軟解析的過程來提高效能。
軟解析與硬解析都比較耗費資源。
以下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');
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');
當我們執行一個SQL時,我們將會在shared pool產生一個library cache object, cursor就是其中針對SQL的一種library cache object。另外我們在PGA會有一個cursor的拷貝,同時在客戶端有一個statement handle,這些都被稱為cursor。
在v$open_cursor裡我們可以看到當前開啟的cursor和PGA內的cached cursor。
sesseion_cached_cursor限制了在PGA內session cursor cache list的長度,session cursor cache list是一條雙向的LRU(Least Recently Used) 連結串列,當一個session打算關閉一個cursor時,如果這個cursor的parse count超過3次,那麼這個cursor將會被加到session cursor cache list的MRU端(Most Recently Used)。當一個session打算parse一個SQL時,它會先去PGA內搜尋session cursor cache list, 如果找到那麼會把這個cursor脫離list, 然後當關閉時再把這個cursor加到MRU端。session_cached_cursor提供了快速軟解析的功能,提供了比soft parse更高的效能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-768892/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 引數 session_cached_cursors 與 open_cursors詳解Session
- Execute to Parse% 及open_cursors,session_cached_cursorsSession
- 修改open_cursors和session_cached_cursors的引數值Session
- 關於open_cursors和session_cached_cursors的引數值Session
- 正確設定open_cursors和'session_cached_cursors' 可以減少sql解析SessionSQL
- Oracle:open_cursorsOracle
- 多版本cursor,與session_cached_cursors關係Session
- session_cached_cursorsSession
- v$sqlarea_parse_calls與executions與session_cached_cursors關係SQLSession
- SESSION_CURSOR_CACHE open_cursorsSession
- 共享池之九:繫結變數與session_cached_cursors變數Session
- SESSION_CACHED_CURSORS詳解Session
- 引數SESSION_CACHED_CURSORSSession
- session_cached_cursors的研究Session
- 【最佳化】引數SESSION_CACHED_CURSORS與解析之間的關係Session
- session_cached_cursors,cursor_space_for_timeSession
- 初始化引數OPEN_CURSORS的理解加深
- open_cursor session_cached_cursors 優化Session優化
- [20180822]session_cached_cursors與子游標堆0.txtSession
- 受困於一個引數:session_cached_cursorsSession
- 引數session_cached_cursors的詳細解釋(zt)Session
- Awr和statspack中的execute to parse和session_cached_cursorsSession
- Oracle 11gR2 調整session_cached_cursors引數OracleSession
- 引數session_cached_cursors的工作原理及優缺點分析Session
- 9i資料庫下修改session_cached_cursors引數資料庫Session
- undefined與null與?. ??UndefinedNull
- &與&&, |與||區別
- 進與穩,時代與技術,新基建與華為雲
- 程式與執行緒、同步與非同步、阻塞與非阻塞、併發與並行執行緒非同步並行
- Promise與async/await與GeneratorPromiseAI
- in與exist , not in與not exist 的區別
- Python學習筆記 5.0 元組 與 字典 與 集合 與 公共操作 與 推導式Python筆記
- 聊聊執行緒與程式 & 阻塞與非阻塞 & 同步與非同步執行緒非同步
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- forms元件補充與ModelForm簡單使用與cookie與sessionORM元件CookieSession
- PHP 與 Swoole 淺析與學習PHP
- PySpark與GraphFrames的安裝與使用Spark
- PHPCookie與Session的使用與區別PHPCookieSession