oracle引數-cursor_sharing
EXACT: 只令完全相同的 SQL 語句共享一個遊標。預設值: EXACT[@more@]
cursor_sharing:說明: 控制可以終止共享相同的共享遊標的 SQL 語句型別。值範圍:強制: 強制表達方式不同但語句意思相同的語句共享一個遊標。
EXACT: 只令完全相同的 SQL 語句共享一個遊標。預設值: EXACT
若存在欄位的 histograms ,則每次是不同的值的時候都產生硬解析 ,若不存在 histograms,則不產生硬解析。換句話說,當表的欄位被分析過存在histograms的時候,similar 的表現和exact一樣,當表的欄位沒被分析,不存在histograms的時候,similar的表現和force一樣。
這樣避免了一味地如force一樣轉換成變數形式,因為有histograms的情況下轉換成變數之後就容易產生錯誤的執行計劃,沒有利用上統計資訊。而exact呢,在沒有histograms的情況下也要分別產生硬解析,這樣的話,由於執行計劃不會受到資料分佈的影響(因為沒有統計資訊)重新解析是沒有實質意義的。而similar則綜合了兩者的優點。
如果應用程式沒有使用繫結變數,而且修改應該程式的代價很大,那麼有時候採用折中的方式,在Oracle上設定CURSOR_SHARING為FORCE。這樣強制系統採用繫結變數。但是將引數設定為FORCE會導致很多的問題
從Oracle9i開始,CURSOR_SHARING的值增加了一個SIMILAR,Oracle推薦使用SIMILAR來代替FORCE,當引數設定為SIMILAR時,Oracle不會強制將全部的變數進行繫結,而是根據一些預定義的設定進行判斷。
無論是FORCE引數還是改進後的SIMILAR引數,都是解決繫結變數的替代方式,這些方式都可能帶來一些bug以及很多未知的東西。只有有可能就應該透過修改程式的方法去設定繫結變數。
案例:問題:在程式中select某個表的資料很慢,但是相關的sql在sql*plus中卻非常快就出來了。分析:1.檢察欄位索引(無問題)
2.執行計劃判斷有誤(DBMS_STATS)
3.CURSOR_SHARING(Oracle強制繫結變數,而且這樣作會減少很多CPU負荷,因為它減少了SQL的重複硬解析次數)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1008101/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE中Cursor_sharing引數詳解Oracle
- 初始化引數遊標之cursor_sharing
- Oracle 核心引數Oracle
- Oracle:PDB 引數管理Oracle
- ORACLE並行相關的引數Oracle並行
- Oracle GoldenGate常用引數詳解OracleGo
- oracle rac 核心引數詳解Oracle
- Oracle Table建立引數說明Oracle
- Oracle JDBC ResultSet引數測試OracleJDBC
- 使用 XmlCommand 對Oracle傳引數XMLOracle
- Oracle RAC引數檔案管理Oracle
- oracle O7_DICTIONARY_ACCESSIBILITY 引數Oracle
- [20190917]oracle引數deferred屬性.txtOracle
- Oracle面試寶典-引數篇Oracle面試
- Oracle RAC修改引數檔案位置Oracle
- Oracle ENABLE=broken引數與TCP KeepAliveOracleTCP
- 【Oracle】簡單引數也有講究,JOB_QUEUE_PROCESS引數調研Oracle
- Oracle中的sysctl.conf核心引數Oracle
- Oracle初始化引數的來源Oracle
- Oracle安裝相關Linux引數(轉)OracleLinux
- Oracle 叢集心跳及其引數misscount/disktimeout/reboottimeOracleboot
- oracle 升級12c引數樣例Oracle
- oracle非同步IO之filesystemio_options引數Oracle非同步
- Oracle 10g expdp attach引數體驗Oracle 10g
- Oracle RAC一鍵部署002(引數檢查)Oracle
- Oracle direct path read相關隱含引數Oracle
- oracle中的processes,session,transaction引數詳解OracleSession
- EDBPPAS(Oracle相容版)Oracle與PostgreSQL相容模式的引數配置切換OracleSQL模式
- Oracle vs PostgreSQL Develop(23) - PL(pg)sql(引數宣告)OracleSQLdev
- Oracle RAC 重置db_recovery_file_dest_size引數Oracle
- Oracle RAC一鍵部署004(RAC引數校驗)Oracle
- 【PARAMETER】Oracle引數:MAX_IDLE_BLOCKER_TIME 解釋OracleBloC
- [20180803]cursor_sharing = force.txt
- EDB PPAS(Oracle 相容版) Oracle與PostgreSQL 相容模式的引數配置切換OracleSQL模式
- Oracle 11G 隱含引數“_controlfile_autobackup_delay”Oracle
- Oracle undo保留時間的幾個相關引數Oracle
- 聊聊Oracle表空間Offline的三種引數(上)Oracle
- 聊聊Oracle表空間Offline的三種引數(中)Oracle
- 聊聊Oracle表空間Offline的三種引數(下)Oracle