Oracle

Oracle 10g:相同的查詢,相同數據庫副本的不同計劃

  • April 3, 2014

我有一個查詢加入了許多長表(一個表中的主鍵,另一個表中的索引列),這導致同一數據庫的不同副本上的不同計劃。

包括索引在內的副本的結構是相同的,並且數據是相同的 99+%(副本是在一周內彼此製作的,因此其中一些包含更多或更少的行,對於該特定查詢來說差異完全不顯著) .

問題是,在某些副本上,Oracle 按預期應用索引,而在另一個副本上,即使您指定了提示,也總是會進行全表掃描。

除了資料結構本身,還有哪些因素會影響計劃?例如,是否有任何動態的可用 RAM 或類似的東西?換句話說,在確保“好”副本(使用索引)的數據庫結構與“壞”副本(使用完整掃描)相同之後,我應該檢查什麼?

還是胡說八道,不同的計劃意味著資料結構的差異,而我出於某種原因根本沒有註意到?

還有其他參數會影響執行計劃,例如 PGA 大小、CPU 數量、磁碟 I/O 速度、收集統計資訊時不同的樣本大小、索引修改、不同的系統負載、不同的塊大小等等。

太多了,無法全部檢查。

您可以嘗試使用 sqlTXplain 或 sql Health Check Oracle 的工具來查找此問題的根本原因。

在兩個數據庫上執行相同的查詢並比較您將獲得的參數(sqlTXplain 比較方法)。

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