【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程序員面試筆試寶典》,作者:李華榮。