SQL優化例項-思路分析
一SQL優化思路
一個真實具體的SQL優化思路
一般都看預估的執行計劃,比如遇到一個sql執行計劃很長,很複雜,從計劃中沒有看到返回行數多,cost高或連線方式錯誤的地方,沒有明顯瓶頸,但整體邏輯讀很高,執行很慢。這時就可以去看真實的執行計劃,並檢視真實計劃裡邏輯讀cr最多的步驟。可以做個10046。根據邏輯讀最多的步驟判斷對應連線方式,比如這裡nest loop 的cr最大,且對應倆大結果集。顯然有問題。於是再根據預估的執行計劃判斷倆表的連線方式。預估計劃是164 :1結果集,那根據對應查詢條件,發現查詢條件上使用了trunc函式,導致優化器用預設選擇度估計返回行數較少就用全表掃描做驅動表了。
二 AWR分析思路
根據awr分析
1 資料庫IO 大 概要指標,物理讀
負載很高,概要中發現物理讀很高;進一步發現等待事件中跟io等待相關的事件很多;
於是先去wait class小結看到IO等待佔比到70%以上,再看 time model中再發現sql執行佔db time比例很大,可見總體sql執行時間長,IO等待佔用大量消耗,說明是大量IO等待高的sql導致物理讀,於是就根據具體哪個維度檢視sql效能,綜上判斷跟sql 的io等待有關所以檢視按io wait排序的top sql
2 dbcpu 消耗大 概要指標,dbcpu
dbcpu指標值和邏輯cpu近似 ,判斷小號在dbcpu的時間多,進一步根據host指標判斷busy cpu比例也很大,判斷dbcpu上執行時間很長,
首先根據cpu維度查詢top sql, 找出慢sql優化。優化的sql是查詢條件裡使用了or,這點可根據執行計劃裡的實際時間判斷具體慢的計劃步驟,
然後對sql改寫成union方式,具體union還是union all 根據select查詢出的欄位是否有唯一所以判斷查詢欄位中沒有重複資料,所以用
union all不會排重,也不會排序,簡單合併結果後就返回
3 概要指標 redo size
根據redo size 可以判斷是redo日誌太小,還是dml操作過多
如果redo size到 2M/s 那一分鐘120M 20分鐘就是2400M,而現在一個日誌檔案50M ,50M/2M 半分鐘就慢了,所以可以跑個ADDM ,
根據建議把redoSize設定到2G。
參考 效能調優之redo切換頻率
4 邏輯讀和物理讀幾乎一致
判讀是直接繞過SGA,讀資料到PGA了,等待事件發現有direct path read,根據問題現象發現使用者用8條sql做並行測試,因此db判斷
每個程式各讀各的不在共享一個SGA,其他記憶體裡讀資料,因此效能變慢
也有類似邏輯讀和物理讀差不多的時候,但那就是邏輯讀慢,執行時間長,且大部分時間在db cpu上,跟HASH 連線演算法有關,
使某個桶內的資料太過多,早成每個塊上的資料每次都要在桶內比較很長時間,造成邏輯讀很低,hash表都快取在記憶體,但每次比較
都要從磁碟讀資料和桶裡資料比較
http://blog.itpub.net/26736162/viewspace-2137141/ Oracle資料庫伺服器IO高的分析方案和案例探討
http://www.talkwithtrend.com/Article/177951 我和資料中心的故事-分享批量時快時慢的場景
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-2141158/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL優化例項SQL優化
- SQL開發例項和優化SQL優化
- 慢Sql優化思路SQL優化
- (轉)例項分析:MySQL優化經驗MySql優化
- MySQL 優化例項MySql優化
- (轉)MySQL優化例項MySql優化
- 【SQL優化】SQL優化的10點注意事項SQL優化
- oracle優化一例之sql優化Oracle優化SQL
- SQL優化思路&結果集重用優化、分割槽索引優化測試SQL優化索引
- DeviceMotionEvent程式碼優化例項dev優化
- PL/SQL優化一例SQL優化
- SQL效能優化案例分析SQL優化
- PHP漏洞挖掘思路+例項PHP
- 拜年+散分貼《Oracle SQL_TRACE和10046事件優化SQL例項》OracleSQL事件優化
- HP UNIX系統優化例項優化
- SQL語句優化方法30例SQL優化
- 通過IP定位區域的SQL優化思路SQL優化
- Mysql慢SQL分析及優化MySql優化
- SQL調整優化與10053跟蹤分析一例SQL優化
- 分享一個SQLite 效能優化例項SQLite優化
- C# Winform程式介面優化例項C#ORM優化
- java多型-優化上個例項Java多型優化
- 優化 WebView 的載入速度例項優化WebView
- 無線頁面動畫優化例項動畫優化
- sql優化一例(index_desc)SQL優化Index
- SQL語句優化方法30例(轉)SQL優化
- SQL TOP 例項SQL
- 類的例項化順序和分析
- SQL調整優化與10053跟蹤分析一例(zt)SQL優化
- SQL語句優化技術分析SQL優化
- sql語句的優化案例分析SQL優化
- SQL 調優一般思路SQL
- SQL SERVER 日期相關性優化選項SQLServer優化
- YACC 例項分析
- ORACLE SQL語句優化技術分析OracleSQL優化
- css優化文字顯示效果程式碼例項CSS優化
- 【前端構建】WebPack例項與前端效能優化前端Web優化
- 記憶體洩露例項分析 -- Android記憶體優化第四彈記憶體洩露Android優化