Oracle-11g-R2

Oracle 執行計劃中的 COST 單位

  • October 22, 2014

Oracle 執行計劃中是否有成本單位?

我的意思是,如果一個操作的成本是 50,那麼我可以將此數字映射到 CPU 週期或使用率百分比嗎?這個數字代表什麼?

有什麼方法可以推斷出這個操作需要多少秒或毫秒才能完成?

不幸的是,答案如下:

Oracle 執行計劃中是否有成本單位?

並不真地。

我的意思是,如果一個操作的成本是 50,那麼我可以將此數字映射到 CPU 週期或使用率百分比嗎?

沒有。

這個數字代表什麼?

它是這樣定義的:(參見詞彙表

> > 一個數字內部度量,表示執行計劃的估計資源使用情況。成本越低,計劃越有效。 > > >

就該數字的定義而言,這就是您將獲得的所有資訊。

有什麼方法可以推斷出這個操作需要多少秒或毫秒才能完成?

不,根據我的經驗,這個值應該只用於比較同一查詢的不同計劃,然後加一點(嗯,很多)鹽。如果一個計劃的成本為 10,另一個計劃的成本為 1M,那麼第一個計劃可能會更快。如果成本接近,它們很可能具有相似的執行時行為,但情況並非總是如此。

The Oracle Optimizer - Explain the Explain Plan (PDF) 文件對該值有幾句話,但是:

> > 優化器的成本模型考慮了查詢將使用的 IO、CPU 和網路資源。 > > $$ … $$
> > 成本是一個內部單位,僅顯示以允許計劃比較。 >

Oracle 如何計算解釋計劃中的成本?關於 Stack Overflow 有一些與該成本值相關的很好的輸入(包括 Oracle 9i 的“公式”),以及 Justin Cave 的好建議:基數估計更有意義,您實際上可以將它們與現實進行比較。

引用自:https://dba.stackexchange.com/questions/80563