隱含參數_optimizer_use_feedback


問題背景:
有時候會遇到比較奇怪的現象,首次執行sql速度很快,后面再執行就變得很慢

正常來講同樣的一條SQL查詢語句,根據執行計划,第一次查詢完以后,后續再執行相同的語句應該很快才對。
可是,現實卻是第一次查詢不慢(優化后2秒內查詢),第二次以后就很慢。


對於執行計划中,在note部分有“cardinality feedback used for this statement”,表示使用了基數反饋(Cardinality Feedback)
基數反饋(Cardinality Feedback)是 Oracle 11.2 中引入的新特性,主要針對統計信息舊、無直方圖或有直方圖但仍基數計算不准確的情況,
Cardinality 基數的計算直接影響到后續的 JOIN COST 等重要的成本計算評估,造成 CBO 選擇錯誤的執行計划。但是該參數存在不穩定因素,可能會帶來執行效率的問題,建議關閉

alter system set "_optimizer_use_feedback"=FALSE;

此處先在session級別關閉

alter session set "_optimizer_use_feedback"=FALSE;

接下來反復執行sql,發現執行時間恢復正常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM