­

【DB筆試面試602】在Oracle中,如何從執行計劃初步判斷SQL的性能問題?

  • 2019 年 10 月 10 日
  • 筆記

題目部分

在Oracle中,如何從執行計劃初步判斷SQL的性能問題?

答案部分

從以下幾點去考慮:

l 執行計劃關注點

l 預估返回行數

l 真實返回行與邏輯讀比率

l 預估行數和真實返回行數的差異

l Predicate Information部分是否有隱式類型轉換

l 遞歸調用(recursive calls)值是否過大

l 表的訪問次數是否過大

l 注意表真實訪問行數

l 查看是否在磁碟排序

l 注意A-Time時間列

l 注意Pstart、Pstop、PARTITION RANGE ALL

l 注意MERGE JOIN CARTESIAN

l 注意REMOTE分散式查詢

l 注意動態取樣

l 是否使用了某種固定執行計劃的策略

詳情可以從下表所示的幾個方面去考慮:

此外,還有一些其它需要注意的地方,例如COST花費特別大的步驟、全表掃描的步驟、FILTER的操作等等,都是需要特別關注的地方,這裡就不詳細列舉了,總之,看執行計劃和看AWR報告一樣,需要具有一雙敏銳的鷹眼,最主要的是找出SQL的性能瓶頸。

本文選自《Oracle程式設計師面試筆試寶典》,作者:李華榮。