新聞中心
在當今的資訊時代,創(chuàng)造和積累的數(shù)據(jù)量日益龐大,這樣的數(shù)據(jù)量需要接受管理和維護。而數(shù)據(jù)庫系統(tǒng)正是日益壯大的數(shù)據(jù)量存儲和使用的基礎,因此維護數(shù)據(jù)庫系統(tǒng)的有效性和高性能就成為了至關重要的事情。數(shù)據(jù)庫性能監(jiān)控,也就成為了一項必不可少的任務。本文將詳細介紹一些數(shù)據(jù)庫性能監(jiān)控的方法和指南。

10年的肇源網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整肇源建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“肇源網(wǎng)站設計”,“肇源網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
監(jiān)控數(shù)據(jù)庫狀態(tài)
當用戶訪問數(shù)據(jù)庫時,其性能并沒有達到其更高水平,這可能是由于數(shù)據(jù)庫中存在某些訪問或磁盤空間的問題。這個級別的監(jiān)控可以通過以下方法完成:
1.查看數(shù)據(jù)庫的狀態(tài)報告:在多數(shù)數(shù)據(jù)庫管理系統(tǒng)中,你可以通過運行以下命令獲取狀態(tài)報告:
SHOW VARIABLES; SHOW STATUS;
通過此方法,可以及時了解數(shù)據(jù)庫實例的磁盤空間、緩存使用和負載信息。
2.部署數(shù)據(jù)庫性能監(jiān)控工具:MySQL的Percona監(jiān)控工具是在傳統(tǒng)的MySQL監(jiān)控工具上的更新,通過可視化顯示,可以更好地查看數(shù)據(jù)。
3.使用命令行工具:你也可以使用命令行工具來進行數(shù)據(jù)庫性能監(jiān)控,諸如”TOP”命令可以快速反應系統(tǒng)負載和主要進程的資源消耗。
監(jiān)控物理層狀態(tài)
監(jiān)控系統(tǒng)物理狀態(tài)是數(shù)據(jù)庫性能優(yōu)化的重要步驟之一,這里物理狀態(tài)指的是CPU、服務器磁盤,內(nèi)存等部件的使用情況。
1.監(jiān)理CPU:CPU的性能顯然對系統(tǒng)響應時間有著嚴格的要求,因此使用命令lpstat來查看即可。
2.監(jiān)控內(nèi)存性能:內(nèi)存的大小、使用情況和分配對系統(tǒng)性能來說都是至關重要的,使用命令free和vmstat可以查看內(nèi)存的情況。
3.監(jiān)控磁盤性能:磁盤執(zhí)行I / O操作是數(shù)據(jù)庫性能更大的瓶頸之一,通過使用Iostat和Diskstat命令,用戶可以查看磁盤的使用率。
監(jiān)控數(shù)據(jù)庫查詢優(yōu)化
優(yōu)化查詢的執(zhí)行計劃是所有數(shù)據(jù)庫性能優(yōu)化中最困難的一項。如果查詢的執(zhí)行計劃安排不當,則會導致查詢速度變慢,嚴重測試將閃退發(fā)生。
1.確定性能瓶頸:使用命令Show full processlist,查看當前活動進程,判斷是否有進程運行較慢;使用EXPLN命令將慢查詢的執(zhí)行計劃輸出。
2.優(yōu)化緩存查詢:在MySQL中,大量查詢可以通過降低查詢時間壓縮了處理時間。MySQL緩存后的查詢(如果所需數(shù)據(jù)已經(jīng)存在于緩存)不需要進行磁盤讀取,這個過程將會極大地減少查詢時間。
3.優(yōu)化索引:在許多情況下,優(yōu)化索引會有助于保持數(shù)據(jù)庫快速運行。
監(jiān)控數(shù)據(jù)庫備份和恢復
任何數(shù)據(jù)庫都需要實現(xiàn)可靠的備份和恢復功能來保護對該數(shù)據(jù)庫的全部訪問。另外,通過監(jiān)視備份操作,用戶還可以提高數(shù)據(jù)庫性能。
1.備份和恢復:備份MySQL分為物理備份和邏輯備份兩種方法。物理備份是將數(shù)據(jù)庫完整的復制到另一個位置,以確保在數(shù)據(jù)丟失的情況下可以以最快的速度恢復。邏輯填坑的是備份數(shù)據(jù)的關系結構,而不是復制整個數(shù)據(jù)庫,此方法最適用于小型數(shù)據(jù)庫和輕型的數(shù)據(jù)。
2.備份監(jiān)控:監(jiān)測備份和恢復數(shù)據(jù)的過程可以確保這些任務按正確的計劃執(zhí)行。
本文簡要介紹了一些數(shù)據(jù)庫性能監(jiān)控的方法和指南,包括監(jiān)聽數(shù)據(jù)庫狀態(tài),監(jiān)測物理層狀態(tài),監(jiān)測數(shù)據(jù)庫查詢優(yōu)化以及數(shù)據(jù)庫備份和恢復等。數(shù)據(jù)庫性能監(jiān)控是一個重要的任務,特別是對于商業(yè)或企業(yè)級的數(shù)據(jù),在若干次操作后數(shù)據(jù)庫性能會出現(xiàn)急劇下降。而通過合適的數(shù)據(jù)庫性能監(jiān)控技巧,用戶可以確保數(shù)據(jù)庫系統(tǒng)保持高效和可靠運行。
相關問題拓展閱讀:
- 如何使用AWR報告來診斷數(shù)據(jù)庫性能問題
- 如何進行數(shù)據(jù)庫性能分析?
如何使用AWR報告來診斷數(shù)據(jù)庫性能問題
一般來說,當檢測到性能問題時,我們會收集覆蓋了發(fā)生問題的時間段的AWR報告-但是更好只收集覆蓋1個小時時間段的AWR報告-如果時間過長,那么AWR報告就不能很好的反映出問題所在。還應該收集一份沒有性能問題的時間段的AWR報告,作為一個參照物來對比有問題的時間段的AWR報告。這兩個AWR報告的時間段應該是一致的,比如都是半個小時的,或者都是一個小時的。
Interpretation
在處理性能問題時,我們最關注的是數(shù)據(jù)庫正在等待什么。
當進程因為某些原因不能進行操作時,它需要等待?;ㄙM時間最多的等待事件是我們最需要關注的,因為降低它,我們能夠獲得更大的好處。
AWR報告中的”Top 5 Timed Events”部分就提供了這樣的信息,可以讓我們只關注主要的問題。
Top 5 Timed Events
正如前面提到的,”Top 5 Timed Events”是AWR報告中最重備告要的部分。它指出了數(shù)據(jù)庫的sessions花費時間最多的等待事件,如下:
Top 5 Timed EventsAvg %Total
~~~~~~~~~~~~~~~~~~wait Call
Event Waits Time (s) (ms) Time Wait Class
db file scattered read,152,,9.6 User I/O
db file sequential read,327,,7.6 User I/O
CPU time6,0.5
read by other session,397,,2.2 User I/O
PX Deq Credit: send blkd1,,9.Other
—–
Top 5 Events部分包含了一些跟Events(事件)相關的信息。它記錄了這期間遇到的等待的總次數(shù),等待所花費的總時間,每次等待的平均時間;這一部分是按照每個Event占總體call time的百分比來進行排序的。
根 據(jù)Top 5 Events部分的信息的不同,接下來我們需要檢查AWR報告的其他部分,來驗證發(fā)現(xiàn)的問題或者做定量分析。等待事件需要根據(jù)報告期的持續(xù)時間和當時數(shù)據(jù) 庫中的并發(fā)用戶數(shù)進行評估。如:10分鐘內(nèi)1000萬次的等待事件比10個小時內(nèi)的1000萬等待更有問題;10個用戶引起的1000萬次的等待事件比 10,000個用戶引起的相同的等待要更有問題。
就像上面的例子,將近60%的時間是在等待IO相關的事件。
其他20%的時間旅滾世是花在使用或等待CPU time上。過高的CPU使用經(jīng)常是性能不佳的SQL引起的(或者這些SQL有可能用更少的資源完成同樣的操作);對于這樣的SQL,過多的IO操作也是一個癥狀。關于CPU使用方面,我們會在之后討論。
在以上基礎上,我們將調(diào)查是否這個等待事件是有問題的。若有問題,解決它;若是正常的,檢查下個等待事件。
過多的IO相關的等待一般會有兩個主要的原因:
Top 5 Events部分的顯示的信息會幫助我們檢查:
需要注意,接下來的分析步驟取決于我們在TOP 5部分的發(fā)現(xiàn)。在上面的例子里,3個top wait event表明問拆肢題可能與SQL語句執(zhí)行計劃不好有關,所以接下來我們要去分析”SQL Statistics”部分。
同樣的,因為我們并沒有看到latch相關的等待,latch在我們這個例子里并沒有引發(fā)嚴重的性能問題;那么我們接下來就完全不需要分析latch相關的信息。
一 般來講,如果數(shù)據(jù)庫性能很慢,TOP 5等待事件里”CPU”, “db file sequential read” 和”db file scattered read” 比較明顯(不管它們之間的順序如何),我們總是需要檢查Top SQL (by logical and physical reads)部分;調(diào)用SQL Tuning Advisor或者手工調(diào)優(yōu)這些SQL來確保它們是有效率的運行。
是否數(shù)據(jù)庫做了大量的讀操作:
上面的圖顯示了在這段時間里兩類讀操作都分別大于1000萬,這些操作是否過多取決于報告的時間是1小時或1分鐘。我們可以檢查AWR報告的elapsed time如果這些讀操作確實是太多了,接下來我們需要檢查AWR報告中 SQL Statistics 部分的信息,因為讀操作都是由SQL語句發(fā)起的。
是否是每次的IO讀操作都很慢:
上面的圖顯示了在這段時間里兩類讀操作平均的等待時間是小于8ms的
至于8ms是快還是慢取決于底層的硬件設備;一般來講小于20ms的都可以認為是可以接受的。
我們還可以在AWR報告”Tablespace IO Stats”部分得到更詳細的信息
Tablespace IO StatsDB/Inst: VMWREP/VMWREP Snaps: 1-15
-> ordered by IOs (Reads + Writes) desc
Tablespace
—
Av Av AvAv Buffer Av Buf
Reads Reads/s Rd(ms) Blks/RdWrites Writes/s Waits Wt(ms)
TS_TX_DATA
14,246, 7..6 145,263,,883 3,844,.3
USER
204,10..0 17,849, 15,.8
UNDOTS1
19, 3..0 10,064, 1,.9
AE_TS
4,287, 5..65,.7
TEMP
2,022, 0..,.0
UNDOTS3
1,310, 4..,.0
TS_TX_IDX
1,884, 7.., 73,.3
>SYSAUX
346, 5..,.0
SYSTEM
101, 7..,.7
如上圖,我們關心Av Rd(ms)的指標。如果它高于20ms并且同時有很多讀操作的,我們可能要開始從OS的角度調(diào)查是否有潛在的IO問題。
注:對于一些比較空閑的tablespace/files,我們可能會得到一個比較大的Av Rd(ms)值;對于這樣的情況,我們應該忽略這樣的tablespace/files;因為這個很大的值可能是由于硬盤自旋(spin)引起的,沒有太大的參考意義。比如對
于一個有1000萬次讀操作而且很慢的系統(tǒng),引起問題的基本不可能是一個只有10次read的tablespace/file.
雖 然高”db file scattered read”和”db file sequential read”等待可以是I / O相關的問題,但是很多時候這些等待也可能是正常的;實際上,對一個已經(jīng)性能很好的數(shù)據(jù)庫系統(tǒng),這些等待事件往往在top 5等待事件里,因為這意味著您的數(shù)據(jù)庫沒有那些真正的“問題”。
訣竅是能夠評估引起這些等待的語句是否使用了更優(yōu)的訪問路徑。如果”db file scattered read”比較高,那么相關的SQL語句可能使用了全表掃描而沒有使用索引(也許是沒有創(chuàng)建索引,也許是沒有合適的索引);相應的,如果”db file sequential read”過多,則表明也許是這些SQL語句使用了selectivity不高的索引從而導致訪問了過多不必要的索引塊或者使用了錯誤的索引。這些等待可 能說明SQL語句的執(zhí)行計劃不是更優(yōu)的。
接下來就需要通過AWR來檢查這些top SQL是否可以進一步的調(diào)優(yōu),我們可以查看AWR報告中 SQL Statistics 的部分.
上面的例子顯示了20%的時間花在了等待或者使用CPU上,我們也需要檢查 SQL statistics 部分來進一步的分析。
數(shù)據(jù)庫做了太多的讀操作
每次的IO讀操作都很慢
事件”db file scattered read”一般表明正在做由全表掃描或者index fast full scan引起的多塊讀。
事件”db file sequential read”一般是由不能做多塊讀的操作引起的單塊讀(如讀索引)
SQL Statistics
AWR包含了一些不同的SQL統(tǒng)計值:
根據(jù)Top 5 部分的Top Wait Event不同,我們需要檢查不同的SQL statistic。
在我們這個例子里,Top Wait Event是”db file scattered read”,”db file sequential read”和CPU;我們最需要關心的是SQL ordered by CPU Time, Gets and Reads。
我們會從”SQL ordered by gets”入手,因為引起高buffer gets的SQL語句一般是需要調(diào)優(yōu)的對象。
SQL ordered by Gets
-> Resources reported for PL/SQL code includes the resources used by all SQL
statements called by the code.
-> Total Buffer Gets: 4,745,943,815
-> Captured SQL account for.2% of Total
GetsCPU Elapsed
Buffer Gets Executions per Exec %Total Time (s) Time (s) SQL Id
1,228,753,68 7,314,011.2 25…73 5t1y1nvmwp2
SELECT ADDRESSID”,CURRENT$.”ADDRESSTYPEID”,CURRENT$URRENT$.”ADDRESS3″,
CURRENT$.”CITY”,CURRENT$.”ZIP”,CURRENT$.”STATE”,CURRENT$.”PHONECOUNTRYCODE”,
CURRENT$.”PHONENUMBER”,CURRENT$.”PHONEEXTENSION”,CURRENT$.”FAXCOU
1,039,875,,959,.5 21…96 grr4mg7ms81
Module: DBMS_SCHEDULER
INSERT INTO “ADDRESS_RDON” (“ADDRESSID”,”ADDRESSTYPEID”,”CUSTOMERID”,”
ADDRESS1″,”ADDRESS2″,”ADDRESS3″,”CITY”,”ZIP”,”STATE”,”PHONECOUNTRYCODE”,”PHONENU
854,035,68 5,083,543.0 18…95 4at7cbx8hnz
SELECT “CUSTOMERID”,CURRENT$.”ISACTIVE”,CURRENT$.”FIRSTNAME”,CURRENT$.”LASTNAME”,CU Total Buffer Gets: 4,745,943,815
假設這是一個一個小時的AWR報告,4,745,943,815是一個很大的值;所以需要進一步分析這個SQL是否使用了更優(yōu)的執(zhí)行計劃
Individual Buffer Gets
上面的例子里單個的SQL的buffer get非常多,最少的那個都是8億5千萬。這三個SQL指向了兩個不同的引起過多buffers的原因:
注意:對于某些非常繁忙的系統(tǒng)來講,以上的數(shù)字可能都是正常的。這時候我們需要把這些數(shù)字跟正常時段的數(shù)字作對比,如果沒有什么太大差別,那么這些SQL并不是引起問題的元兇(雖然通過調(diào)優(yōu)這些SQL我們?nèi)匀豢梢允芤妫?/p>
Load Profile
根據(jù)Top 5等待事件的不同,”Load Profile”可以提供一些有用的背景資料或潛在問題的細節(jié)信息。
Load Profile
~~~~~~~~~~~~Per SecondPer Transaction
Redo size:,585,414.,165,883.14
Logical reads:4,185. 65,028.07
Block changes:0,028. 27,636.71
Physical reads:2,206. 1,523.16
Physical writes:3,939. 2,720.25
User calls: 50..58
Parses: 26..61
Hard parses: 1..03
Sorts: 18..68
Logons: 0..09
Executes:4,925. 3,400.96
Transactions: 1.45
% Blocks changed per Read: 42.50 Recursive Call %: 99.19
Rollback per transaction %: 59.Rows per Sort: 1922.64
在這個例子里,Top 5 Events部分顯示問題可能跟SQL的執(zhí)行有關,那么我們接下來檢查load profile部分。
如果您檢查AWR report是為了一般性的性能調(diào)優(yōu),那么可以看到有比較多的redo activity和比較高的physical writes. Physical writes比physical read要高,并且有42%的塊被更改了.
此外,hard parse的次數(shù)要少于soft parse.
如果mutex等待事件比較嚴重,如”library cache: mutex X”,那么查看所有parse的比率會更有用。
當然,如果把Load Profile部分跟正常時候的AWR報告做比較會更有用,比如,比較redo size, users calls, 和 parsing這些性能指標。
Instance Efficiency
Instance Efficiency部分更適用于一般性的調(diào)優(yōu),而不是解決某個具體問題(除非等待事件直接指向這些指標)。
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 99.Redo NoWait %: 100.00
Buffer Hit %: 98.14 In-memory Sort %: 99.98
Library Hit %: 99.Soft Parse %: 94.48
Execute to Parse %: 99.Latch Hit %: 99.97
Parse CPU to Parse Elapsd %: 71.% Non-Parse CPU: 99.00
從我們的這個例子來看,最有用的信息是%Non-Parse CPU,它表明幾乎所有的CPU都消耗在了Execution而不是Parse上,所以調(diào)優(yōu)SQL會對性能有改善。
如何進行數(shù)據(jù)庫性能分析?
使用RichAPM可以直接針對不同脊喚類型的數(shù)據(jù)庫性能進行分析,包括MySQL、Oracle、SQL Server三類關系型數(shù)據(jù)庫及Memcache、redis兩此斗類非關系型數(shù)據(jù)森野磨庫。
使遲宴用LR對數(shù)據(jù)庫進行性能測試,實際上有多碼皮銀種辦法,包括通過現(xiàn)有的數(shù)據(jù)庫協(xié)議進行CS模式的先錄制后執(zhí)行的模式,以及通過socket方式向服務器發(fā)包方式的測試方式。這些是常規(guī)書籍上介紹的比較簡單上手的測試方法,但是不具備通用性,握罩受已有協(xié)議或soc
如何查看數(shù)據(jù)庫的性能狀態(tài)的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于如何查看數(shù)據(jù)庫的性能狀態(tài),數(shù)據(jù)庫性能監(jiān)控指南:查看方法簡介,如何使用AWR報告來診斷數(shù)據(jù)庫性能問題,如何進行數(shù)據(jù)庫性能分析?的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)網(wǎng)絡推廣網(wǎng)站建設,網(wǎng)站設計,網(wǎng)站建設公司,網(wǎng)站制作,網(wǎng)頁設計,1500元定制網(wǎng)站優(yōu)化全包,先排名后付費,已為上千家服務,聯(lián)系電話:13518219792
文章題目:數(shù)據(jù)庫性能監(jiān)控指南:查看方法簡介(如何查看數(shù)據(jù)庫的性能狀態(tài))
文章分享:http://www.fisionsoft.com.cn/article/djpjhhg.html


咨詢
建站咨詢
