為什麼基於代價的最佳化器做出錯誤選擇

來源:互聯網
上載者:User

基於代價的最佳化器(CBO)在進行全表掃描時偶爾會作出一些錯誤的選擇,這種情況尤其發生在Oracle7和Oracle8之中。有幾種情況會導致這個問題,分別如下所示:最高使用標記(High water mark)太高:當要在一個表中進行大量的刪除時,最高使用標記可能會遠遠高於實際用到的資料區塊(block)數量。因此,如果依賴於最高使用標記,CBO常常會錯誤的調用全表掃描。

錯誤的最佳化模式:如果OPTIMIZER_MODE被設定為ALL_ROWS或者CHOOSE,那麼SQL最佳化器會更樂於使用全表掃描。如果想進行快速的OLTP最佳化,必須首先確認已經將OPTIMIZER_MODE設定成FIRST_ROWS。

貧乏的統計:如果表已經顯著的增長,並且沒有被重新分析以更新統計資料,那麼也許會錯誤的進行全表掃描,因為CBO認為表長還是像未增長之前那麼小。

偏斜的索引:如果一個查詢中的候選索引存在偏斜值,那麼CBO也許會錯誤的選擇全表掃描。例如,考慮一個尋找所有滿足條件REGION=SOUTHERN的記錄的查詢。在Region欄中已經有了一個索引,但是只有1%的條目是Southern region的。在缺少列的柱狀圖的情況下,CBO不知道Southern region有更高的命中率,所以它會選擇全表掃描。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。