您好,登錄后才能下訂單哦!
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",共同學習,共同成長!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。