您好,登錄后才能下訂單哦!
1
自適應游標共享Adaptive Cursor Sharing或擴展的游標共享(Extended Cursor Sharing)是Oracle 11g的新特性之一,主要用于解決以前版由于綁定變量窺探導致SQL語句無法獲得最佳執行計劃的缺陷,即能夠對效率低下的游標(子游標)進行自動識別而選擇最佳的執行計劃。
2 使用綁定變量執行SQL語句并獲得首次執行情況
3 自適應游標共享的外在體現
自適應游標共享主要通過三個字段來得以體現,即is_bind_sensitive,is_bind_aware,is_shareable。(注:此三個字段僅在Oracle 11g
中存在)。通過上面從v$sql(v$sqlarea中不存在is_shareable)的查詢可知,三個字段分別被賦予了不同的值,代表了不同的含義。
is_bind_sensitive(綁定是否敏感)
表示該子游標中是否使用了綁定變量要素,且采用bind peeking方法進行執行計劃生成。如果執行計劃依賴于窺探到的值,此處為Y,
否則為N。
is_bind_aware(綁定是否可知)
表示該子游標是否使用了extended cursor sharing技術,是則為Y,否則為N,如為N,則該游標將廢棄,不再可用。
is_shareable(是否可共享)
表示該子游標可否被下次軟解析是否可共享使用。可共享則為Y,否則為N,表示該子游標失去了共享價值,按LRU算法淘汰。
由于該SQL語句為首次執行,因此從v$sql查詢的結果中得知
is_bind_sensitive 為Y值(首次運行,執行了bind peeking)
is_bind_aware 為N值(首次運行,不被extended cursor sharing支持)
is_shareable 為Y值(執行計劃可共享)
1、自適應游標共享在SQL語句首次執行時(使用綁定變量),進行窺探,并記錄窺探結果,如果后續有相同的的SQL語句執行,則對窺探結果進行比較以判斷是否需要生成新的執行計劃。此即為綁定變量是否敏感。
2、綁定變量的可知性用于判斷當前的游標是否為可擴展性游標共享,當不可知時,則游標被廢棄。
3、自適應游標共享的實質是在Oracle 10g以前的基礎上實現了多次綁定變量窺探,增加了獲取最佳執行計劃選擇的機率。
4、盡管使用自適應游標共享特性,但并不能保證每次執行SQL語句一定按最佳計劃執行。
5、自適應游標共享也不能保證兩次執行相同SQL語句一定按相同的執行計劃執行,因為自適應游標共享會不斷嘗試peeking。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。