Oracle效能優化-SQL優化(案例一)

chenoracle發表於2020-02-17

Oracle 效能優化 -SQL 優化 ( 案例一 )

環境:

OS:Red Hat Enterprise Linux AS release 4

DB:Oracle 10.2.0.1.0

問題現象:

客戶反饋ERP 系統操作緩慢,伺服器IO 負載較高;

問題原因:

(1) 個別 SQL 執行效率較低,由於 SQL 執行計劃不合理,造成 SQL 執行過程中的邏輯讀和物理讀較多,導致伺服器 IO 負載較高, ERP 執行緩慢;

(2) 收集統計資訊的 JOB 執行時間為工作時間 9:13 ,和正常業務產生資源爭用;

解決方案:

(1) 優化 SQL 執行效率,減少 SQL 執行過程中產生的邏輯讀和物理讀,降低伺服器 IO 負載;

方法:

收集資料不均勻列checkman senderman 的統計直方圖;

(2) 建議將收集統計資訊的 JOB 執行時間更改為非工作時間;

問題分析過程:

可以通過Oracle AWR 報告或者 iostat 命令檢視 IO 負載較高:

查詢IO 負載高的原因:

通過AWR 報告可以看到消耗資源過多的 SQL 主要來源於以下兩個:

一:協同憑證操作對應的SQL

二:用於自動收集統計資訊的JOB

DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate; broken BOOLEAN := FALSE; BEGIN ANALYZE_TB ; :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF; END

通過AWR 檢視 SQL

通過PLSQL 檢視 SQL

通過NMC 檢視 SQL

SQL 優化:

通過繫結變數值以及SQL 執行計劃分析 SQL 產生的執行計劃不合理, pub_workflownote 表沒有走索引,而是走全表掃描;

檢視資料分佈情況,發現senderman checkman 列分佈不均勻

senderman checkman 列收集統計直方圖

再次檢視SQL 執行計劃,發現 pub_workflownote 表可以正常走索引

生成統計直方圖後進行了第一次繫結變數窺探,將生成第一個帶入引數值的正確執行計劃;

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

Oracle效能優化-SQL優化(案例一)

Oracle效能優化-SQL優化(案例一)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2675825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章