Oracle-11g-R2
Oracle 執行計劃中的 COST 單位
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 的好建議:基數估計更有意義,您實際上可以將它們與現實進行比較。