【恩墨學院】基於裸資料的異地資料庫效能診斷與最佳化
楊江
楊江, 6年Oracle工作經驗,4年Oracle資料庫專業服務經驗,擅長效能最佳化、效能問題診斷、故障排查、GOLDENGATE。
影響資料庫效能的因素有很多,從大的方面可以分為硬體和軟體。硬體包括CPU、記憶體、儲存、網路裝置等,軟體方面包括作業系統版本、作業系統引數、資料庫版本、資料庫引數、資料庫架構、執行的SQL程式碼等。
以上因素中,執行的SQL程式碼可單獨歸為一類,這部分內容多變,可控性較低,與業務強關聯,動態影響,難以準確捕獲,問題此消彼長難以根除。透過我們處理的故障型別統計,80%的效能問題來自於不良的SQL語句編寫。
生產環境常做訪問控制,管理生產環境DBA忙於日常事務無法顧及資料庫效能。本文介紹一次性從生產庫上獲取分析效能SQL相關的資料,拿到本地環境分析診斷生產效能問題。
較詳細分析一個SQL的效能,需要的內容包括執行計劃資訊、表的基礎資訊、索引基礎資訊、SQL寫法問題等等。這些內容都存放在資料字典中。
1、建立相關的表,語句參考:
注:(第三條、第四條紅框處,沒有* 是因為這兩個檢視裡面有long型別,不支援create as ct操作,實際操作過程中,未獲取long型別的資料,只選取了必要的列)
2、透過資料泵匯出上述建立的表
3、匯出AWR裸資料
$ORACLE_HOME/rdbms/admin/awrextr.sql
4、本地匯入建立的表
5、透過資料泵匯入AWR裸資料
$ORACLE_HOME/rdbms/admin/awrload.sql
1、執行時段為10~12點,15~17點,平均執行時長超過1秒的SQL統計。多個取樣期間都有執行的,取執行次數最多的取樣期間。
2、執行結果部分展示如下:
3、生成這獲取這此SQL的SQLAWR資料指令碼(取前20)
4、生成結果放入命令視窗執行
注:紅框為格式化操作
5、生成結果展示如下
NEW_TOP_PHYSICAL_16_awr_sqlrpt_dqdx4x39x2x7m.html
SQL文字
FROM GPCXXXXXXXX A
WHERE A.VALIDDATE < :B1
AND A.SUBMITDATE < :B1
AND A.SUBMITDATE >SYSDATE - 40
AND A.FEETYPE IN ('307')
AND A.PLANSTATUS = 'N'
AND ROWNUM = 1;
1. 小時內還未執行完一次,但佔用整個取樣期間8.21%的物理讀,並伴有嚴重的IO等待,對取樣期間資料庫整體效能有較大影響
2. 執行計劃中存在全表掃描操作
3. 語句簡單易懂
表基礎資訊
近3億行,未分割槽,平均行長149,理論佔用空間大小為 296815739*149*1.17/1024/1024/1024=48G,實際佔用約50G空間(從MY_DBA_SEGMENTS中獲取),知此表碎片並不嚴重或不存在碎片。
SQL繫結變數分析
結合繫結變數和條件看,大範圍上,只查詢40天以內的資料。
條件列資料分佈情況
回顧下SQL條件:
WHERE A.VALIDDATE < :B1
AND A.SUBMITDATE < :B1
AND A.SUBMITDATE > SYSDATE - 40
AND A.FEETYPE IN ('307')
AND A.PLANSTATUS = 'N'
AND ROWNUM = 1;
結合條件和上述查詢結果,分析如下:
FEETYPE,PLANSTATUS是等值關聯,VALIDDATE是開區間範圍關聯,SUBMITDATE是閉區間範圍關聯。已知此表中SUBMITDATE保留3年資料,在資料分佈平均的情況下,此SQL查詢的資料量約為(296815739/3/365)*40/25/2=21.7W,約佔整個表的0.07%。理論上適合使用索引,不必要全表掃描。
索引情況分析
1. 此表當前存在3個組合索引4個單列索引
2. 其中前三個索引實則過濾性極差,索引的NDV值僅2個或者3個,除非值嚴重分佈不均,同時又經常選取值少的部分,不然這類索引沒有存在的必要
3. 結合本例子SQL,涉及的列上均沒有索引,建立FEETYPE, SUBMITDATE兩列組合索引,理應提升SQL效能
解決方案
a. 建立FEETYPE, SUBMITDATE組合索引,執行SQL執行時長縮短到10S以內
b. 表按SUBMITDATE分割槽,資料按月存放資料
恩墨學院隸屬於雲和恩墨(北京)資訊科技有限公司,致力於提供專業高水準的與大資料培訓服務,挖掘培養大資料與資料庫人才。恩墨學院提供包括個人實戰技能培訓、個人認證培訓、企業內訓在內的全方位大資料和資料庫技術培訓。ACE級別超強師資,配備專業實驗室,沉浸式學習與訓練,專業實驗室、配備專業助教指導訓練。能迅速融入專家圈子,業內資源豐富,迅速積累職場人脈。課程包括:班、Oracle 、Oracle OCP考試等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28530558/viewspace-2152923/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫異常智慧分析與診斷資料庫
- 【恩墨學院】阿里雲資料庫CloudDBA的自動運維與智慧最佳化探索阿里資料庫Cloud運維
- 【恩墨學院】原來銀行都在用這些資料庫資料庫
- 【恩墨學院】美團點評資料庫高可用架構的演進與設想資料庫架構
- Part II 診斷和優化資料庫效能優化資料庫
- 大語言模型與資料庫故障診斷模型資料庫
- 【恩墨學院】Bad Rabbit病毒引發的企業資料安全的思考與應對方案
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- 墨者學院-SQL手工注入漏洞測試(MySQL資料庫)MySql資料庫
- ODX 診斷資料庫轉換工具 — DDC資料庫
- 基於等待事件的效能診斷(轉)事件
- mssql資料庫異地進行異地備份的方法SQL資料庫
- MySQL資料庫效能最佳化MySql資料庫
- Linux下基於裸裝置建立10g資料庫Linux資料庫
- 【恩墨學院】資料架構:中國電信的Oracle Sharding架構應用案例分析架構Oracle
- 雲和恩墨蓋國強:2020,這是資料庫最好的時代!資料庫
- 使用SQL_TRACE進行資料庫診斷(轉)SQL資料庫
- 資料庫週刊17│OceanBase上雲;Oracle 的歷史;恩墨學院PG初、中級認證培訓開啟...資料庫Oracle
- 打造屬於自己的underscore系列 ( 二 ) - 資料型別診斷資料型別
- 基於知識圖譜與異常檢測的PG資料庫故障定位資料庫
- 從監控到診斷:資料的力量
- [python] 基於PyOD庫實現資料異常檢測Python
- 二十三、資料庫效能最佳化方案資料庫
- SQL Server 資料庫 最佳化 效能瓶頸SQLServer資料庫
- OPPO大資料診斷平臺設計與實踐大資料
- 資料庫簡化運維,智慧診斷助手幫你搞定!資料庫運維
- 基於卷積神經網路的軸承故障診斷研究--資料集介紹卷積神經網路
- 【恩墨學院】一次由查詢轉換引起的效能問題的分析
- 基於PMEM的PG資料庫Memhive資料庫Hive
- 【巨杉資料庫SequoiaDB】巨杉Tech | 四步走,快速診斷資料庫叢集狀態資料庫
- 美國工程院院士Glynn:基於資料的決策,模擬與庫存管理
- 【北亞資料恢復】異常斷電導致Oracle資料庫報錯的oracle資料恢復資料恢復Oracle資料庫
- AutoTiKV:基於機器學習的資料庫調優機器學習資料庫
- 【恩墨學院】5 分鐘帶你看懂 DockerDocker
- KaiwuDB 多模資料庫-時序效能最佳化AI資料庫
- 解析MySQL資料庫效能最佳化的六大技巧MySql資料庫
- 基於json資料格式實現的簡單資料庫——jsonDBJSON資料庫
- 資料庫系統概述之資料庫最佳化資料庫