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

10年的肇源網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整肇源建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“肇源網(wǎng)站設(shè)計(jì)”,“肇源網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
監(jiān)控?cái)?shù)據(jù)庫狀態(tài)
當(dāng)用戶訪問數(shù)據(jù)庫時(shí),其性能并沒有達(dá)到其更高水平,這可能是由于數(shù)據(jù)庫中存在某些訪問或磁盤空間的問題。這個(gè)級(jí)別的監(jiān)控可以通過以下方法完成:
1.查看數(shù)據(jù)庫的狀態(tài)報(bào)告:在多數(shù)數(shù)據(jù)庫管理系統(tǒng)中,你可以通過運(yùn)行以下命令獲取狀態(tài)報(bào)告:
SHOW VARIABLES; SHOW STATUS;
通過此方法,可以及時(shí)了解數(shù)據(jù)庫實(shí)例的磁盤空間、緩存使用和負(fù)載信息。
2.部署數(shù)據(jù)庫性能監(jiān)控工具:MySQL的Percona監(jiān)控工具是在傳統(tǒng)的MySQL監(jiān)控工具上的更新,通過可視化顯示,可以更好地查看數(shù)據(jù)。
3.使用命令行工具:你也可以使用命令行工具來進(jìn)行數(shù)據(jù)庫性能監(jiān)控,諸如”TOP”命令可以快速反應(yīng)系統(tǒng)負(fù)載和主要進(jìn)程的資源消耗。
監(jiān)控物理層狀態(tài)
監(jiān)控系統(tǒng)物理狀態(tài)是數(shù)據(jù)庫性能優(yōu)化的重要步驟之一,這里物理狀態(tài)指的是CPU、服務(wù)器磁盤,內(nèi)存等部件的使用情況。
1.監(jiān)理CPU:CPU的性能顯然對(duì)系統(tǒng)響應(yīng)時(shí)間有著嚴(yán)格的要求,因此使用命令lpstat來查看即可。
2.監(jiān)控內(nèi)存性能:內(nèi)存的大小、使用情況和分配對(duì)系統(tǒng)性能來說都是至關(guān)重要的,使用命令free和vmstat可以查看內(nèi)存的情況。
3.監(jiān)控磁盤性能:磁盤執(zhí)行I / O操作是數(shù)據(jù)庫性能更大的瓶頸之一,通過使用Iostat和Diskstat命令,用戶可以查看磁盤的使用率。
監(jiān)控?cái)?shù)據(jù)庫查詢優(yōu)化
優(yōu)化查詢的執(zhí)行計(jì)劃是所有數(shù)據(jù)庫性能優(yōu)化中最困難的一項(xiàng)。如果查詢的執(zhí)行計(jì)劃安排不當(dāng),則會(huì)導(dǎo)致查詢速度變慢,嚴(yán)重測(cè)試將閃退發(fā)生。
1.確定性能瓶頸:使用命令Show full processlist,查看當(dāng)前活動(dòng)進(jìn)程,判斷是否有進(jìn)程運(yùn)行較慢;使用EXPLN命令將慢查詢的執(zhí)行計(jì)劃輸出。
2.優(yōu)化緩存查詢:在MySQL中,大量查詢可以通過降低查詢時(shí)間壓縮了處理時(shí)間。MySQL緩存后的查詢(如果所需數(shù)據(jù)已經(jīng)存在于緩存)不需要進(jìn)行磁盤讀取,這個(gè)過程將會(huì)極大地減少查詢時(shí)間。
3.優(yōu)化索引:在許多情況下,優(yōu)化索引會(huì)有助于保持?jǐn)?shù)據(jù)庫快速運(yùn)行。
監(jiān)控?cái)?shù)據(jù)庫備份和恢復(fù)
任何數(shù)據(jù)庫都需要實(shí)現(xiàn)可靠的備份和恢復(fù)功能來保護(hù)對(duì)該數(shù)據(jù)庫的全部訪問。另外,通過監(jiān)視備份操作,用戶還可以提高數(shù)據(jù)庫性能。
1.備份和恢復(fù):備份MySQL分為物理備份和邏輯備份兩種方法。物理備份是將數(shù)據(jù)庫完整的復(fù)制到另一個(gè)位置,以確保在數(shù)據(jù)丟失的情況下可以以最快的速度恢復(fù)。邏輯填坑的是備份數(shù)據(jù)的關(guān)系結(jié)構(gòu),而不是復(fù)制整個(gè)數(shù)據(jù)庫,此方法最適用于小型數(shù)據(jù)庫和輕型的數(shù)據(jù)。
2.備份監(jiān)控:監(jiān)測(cè)備份和恢復(fù)數(shù)據(jù)的過程可以確保這些任務(wù)按正確的計(jì)劃執(zhí)行。
本文簡要介紹了一些數(shù)據(jù)庫性能監(jiān)控的方法和指南,包括監(jiān)聽數(shù)據(jù)庫狀態(tài),監(jiān)測(cè)物理層狀態(tài),監(jiān)測(cè)數(shù)據(jù)庫查詢優(yōu)化以及數(shù)據(jù)庫備份和恢復(fù)等。數(shù)據(jù)庫性能監(jiān)控是一個(gè)重要的任務(wù),特別是對(duì)于商業(yè)或企業(yè)級(jí)的數(shù)據(jù),在若干次操作后數(shù)據(jù)庫性能會(huì)出現(xiàn)急劇下降。而通過合適的數(shù)據(jù)庫性能監(jiān)控技巧,用戶可以確保數(shù)據(jù)庫系統(tǒng)保持高效和可靠運(yùn)行。
相關(guān)問題拓展閱讀:
- 如何使用AWR報(bào)告來診斷數(shù)據(jù)庫性能問題
- 如何進(jìn)行數(shù)據(jù)庫性能分析?
如何使用AWR報(bào)告來診斷數(shù)據(jù)庫性能問題
一般來說,當(dāng)檢測(cè)到性能問題時(shí),我們會(huì)收集覆蓋了發(fā)生問題的時(shí)間段的AWR報(bào)告-但是更好只收集覆蓋1個(gè)小時(shí)時(shí)間段的AWR報(bào)告-如果時(shí)間過長,那么AWR報(bào)告就不能很好的反映出問題所在。還應(yīng)該收集一份沒有性能問題的時(shí)間段的AWR報(bào)告,作為一個(gè)參照物來對(duì)比有問題的時(shí)間段的AWR報(bào)告。這兩個(gè)AWR報(bào)告的時(shí)間段應(yīng)該是一致的,比如都是半個(gè)小時(shí)的,或者都是一個(gè)小時(shí)的。
Interpretation
在處理性能問題時(shí),我們最關(guān)注的是數(shù)據(jù)庫正在等待什么。
當(dāng)進(jìn)程因?yàn)槟承┰虿荒苓M(jìn)行操作時(shí),它需要等待?;ㄙM(fèi)時(shí)間最多的等待事件是我們最需要關(guān)注的,因?yàn)榻档退?,我們能夠獲得更大的好處。
AWR報(bào)告中的”Top 5 Timed Events”部分就提供了這樣的信息,可以讓我們只關(guān)注主要的問題。
Top 5 Timed Events
正如前面提到的,”Top 5 Timed Events”是AWR報(bào)告中最重備告要的部分。它指出了數(shù)據(jù)庫的sessions花費(fèi)時(shí)間最多的等待事件,如下:
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(事件)相關(guān)的信息。它記錄了這期間遇到的等待的總次數(shù),等待所花費(fèi)的總時(shí)間,每次等待的平均時(shí)間;這一部分是按照每個(gè)Event占總體call time的百分比來進(jìn)行排序的。
根 據(jù)Top 5 Events部分的信息的不同,接下來我們需要檢查AWR報(bào)告的其他部分,來驗(yàn)證發(fā)現(xiàn)的問題或者做定量分析。等待事件需要根據(jù)報(bào)告期的持續(xù)時(shí)間和當(dāng)時(shí)數(shù)據(jù) 庫中的并發(fā)用戶數(shù)進(jìn)行評(píng)估。如:10分鐘內(nèi)1000萬次的等待事件比10個(gè)小時(shí)內(nèi)的1000萬等待更有問題;10個(gè)用戶引起的1000萬次的等待事件比 10,000個(gè)用戶引起的相同的等待要更有問題。
就像上面的例子,將近60%的時(shí)間是在等待IO相關(guān)的事件。
其他20%的時(shí)間旅滾世是花在使用或等待CPU time上。過高的CPU使用經(jīng)常是性能不佳的SQL引起的(或者這些SQL有可能用更少的資源完成同樣的操作);對(duì)于這樣的SQL,過多的IO操作也是一個(gè)癥狀。關(guān)于CPU使用方面,我們會(huì)在之后討論。
在以上基礎(chǔ)上,我們將調(diào)查是否這個(gè)等待事件是有問題的。若有問題,解決它;若是正常的,檢查下個(gè)等待事件。
過多的IO相關(guān)的等待一般會(huì)有兩個(gè)主要的原因:
Top 5 Events部分的顯示的信息會(huì)幫助我們檢查:
需要注意,接下來的分析步驟取決于我們?cè)赥OP 5部分的發(fā)現(xiàn)。在上面的例子里,3個(gè)top wait event表明問拆肢題可能與SQL語句執(zhí)行計(jì)劃不好有關(guān),所以接下來我們要去分析”SQL Statistics”部分。
同樣的,因?yàn)槲覀儾]有看到latch相關(guān)的等待,latch在我們這個(gè)例子里并沒有引發(fā)嚴(yán)重的性能問題;那么我們接下來就完全不需要分析latch相關(guān)的信息。
一 般來講,如果數(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來確保它們是有效率的運(yùn)行。
是否數(shù)據(jù)庫做了大量的讀操作:
上面的圖顯示了在這段時(shí)間里兩類讀操作都分別大于1000萬,這些操作是否過多取決于報(bào)告的時(shí)間是1小時(shí)或1分鐘。我們可以檢查AWR報(bào)告的elapsed time如果這些讀操作確實(shí)是太多了,接下來我們需要檢查AWR報(bào)告中 SQL Statistics 部分的信息,因?yàn)樽x操作都是由SQL語句發(fā)起的。
是否是每次的IO讀操作都很慢:
上面的圖顯示了在這段時(shí)間里兩類讀操作平均的等待時(shí)間是小于8ms的
至于8ms是快還是慢取決于底層的硬件設(shè)備;一般來講小于20ms的都可以認(rèn)為是可以接受的。
我們還可以在AWR報(bào)告”Tablespace IO Stats”部分得到更詳細(xì)的信息
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
如上圖,我們關(guān)心Av Rd(ms)的指標(biāo)。如果它高于20ms并且同時(shí)有很多讀操作的,我們可能要開始從OS的角度調(diào)查是否有潛在的IO問題。
注:對(duì)于一些比較空閑的tablespace/files,我們可能會(huì)得到一個(gè)比較大的Av Rd(ms)值;對(duì)于這樣的情況,我們應(yīng)該忽略這樣的tablespace/files;因?yàn)檫@個(gè)很大的值可能是由于硬盤自旋(spin)引起的,沒有太大的參考意義。比如對(duì)
于一個(gè)有1000萬次讀操作而且很慢的系統(tǒng),引起問題的基本不可能是一個(gè)只有10次read的tablespace/file.
雖 然高”db file scattered read”和”db file sequential read”等待可以是I / O相關(guān)的問題,但是很多時(shí)候這些等待也可能是正常的;實(shí)際上,對(duì)一個(gè)已經(jīng)性能很好的數(shù)據(jù)庫系統(tǒng),這些等待事件往往在top 5等待事件里,因?yàn)檫@意味著您的數(shù)據(jù)庫沒有那些真正的“問題”。
訣竅是能夠評(píng)估引起這些等待的語句是否使用了更優(yōu)的訪問路徑。如果”db file scattered read”比較高,那么相關(guān)的SQL語句可能使用了全表掃描而沒有使用索引(也許是沒有創(chuàng)建索引,也許是沒有合適的索引);相應(yīng)的,如果”db file sequential read”過多,則表明也許是這些SQL語句使用了selectivity不高的索引從而導(dǎo)致訪問了過多不必要的索引塊或者使用了錯(cuò)誤的索引。這些等待可 能說明SQL語句的執(zhí)行計(jì)劃不是更優(yōu)的。
接下來就需要通過AWR來檢查這些top SQL是否可以進(jìn)一步的調(diào)優(yōu),我們可以查看AWR報(bào)告中 SQL Statistics 的部分.
上面的例子顯示了20%的時(shí)間花在了等待或者使用CPU上,我們也需要檢查 SQL statistics 部分來進(jìn)一步的分析。
數(shù)據(jù)庫做了太多的讀操作
每次的IO讀操作都很慢
事件”db file scattered read”一般表明正在做由全表掃描或者index fast full scan引起的多塊讀。
事件”db file sequential read”一般是由不能做多塊讀的操作引起的單塊讀(如讀索引)
SQL Statistics
AWR包含了一些不同的SQL統(tǒng)計(jì)值:
根據(jù)Top 5 部分的Top Wait Event不同,我們需要檢查不同的SQL statistic。
在我們這個(gè)例子里,Top Wait Event是”db file scattered read”,”db file sequential read”和CPU;我們最需要關(guān)心的是SQL ordered by CPU Time, Gets and Reads。
我們會(huì)從”SQL ordered by gets”入手,因?yàn)橐鸶遙uffer gets的SQL語句一般是需要調(diào)優(yōu)的對(duì)象。
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
假設(shè)這是一個(gè)一個(gè)小時(shí)的AWR報(bào)告,4,745,943,815是一個(gè)很大的值;所以需要進(jìn)一步分析這個(gè)SQL是否使用了更優(yōu)的執(zhí)行計(jì)劃
Individual Buffer Gets
上面的例子里單個(gè)的SQL的buffer get非常多,最少的那個(gè)都是8億5千萬。這三個(gè)SQL指向了兩個(gè)不同的引起過多buffers的原因:
注意:對(duì)于某些非常繁忙的系統(tǒng)來講,以上的數(shù)字可能都是正常的。這時(shí)候我們需要把這些數(shù)字跟正常時(shí)段的數(shù)字作對(duì)比,如果沒有什么太大差別,那么這些SQL并不是引起問題的元兇(雖然通過調(diào)優(yōu)這些SQL我們?nèi)匀豢梢允芤妫?/p>
Load Profile
根據(jù)Top 5等待事件的不同,”Load Profile”可以提供一些有用的背景資料或潛在問題的細(xì)節(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
在這個(gè)例子里,Top 5 Events部分顯示問題可能跟SQL的執(zhí)行有關(guān),那么我們接下來檢查load profile部分。
如果您檢查AWR report是為了一般性的性能調(diào)優(yōu),那么可以看到有比較多的redo activity和比較高的physical writes. Physical writes比physical read要高,并且有42%的塊被更改了.
此外,hard parse的次數(shù)要少于soft parse.
如果mutex等待事件比較嚴(yán)重,如”library cache: mutex X”,那么查看所有parse的比率會(huì)更有用。
當(dāng)然,如果把Load Profile部分跟正常時(shí)候的AWR報(bào)告做比較會(huì)更有用,比如,比較redo size, users calls, 和 parsing這些性能指標(biāo)。
Instance Efficiency
Instance Efficiency部分更適用于一般性的調(diào)優(yōu),而不是解決某個(gè)具體問題(除非等待事件直接指向這些指標(biāo))。
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
從我們的這個(gè)例子來看,最有用的信息是%Non-Parse CPU,它表明幾乎所有的CPU都消耗在了Execution而不是Parse上,所以調(diào)優(yōu)SQL會(huì)對(duì)性能有改善。
如何進(jìn)行數(shù)據(jù)庫性能分析?
使用RichAPM可以直接針對(duì)不同脊喚類型的數(shù)據(jù)庫性能進(jìn)行分析,包括MySQL、Oracle、SQL Server三類關(guān)系型數(shù)據(jù)庫及Memcache、redis兩此斗類非關(guān)系型數(shù)據(jù)森野磨庫。
使遲宴用LR對(duì)數(shù)據(jù)庫進(jìn)行性能測(cè)試,實(shí)際上有多碼皮銀種辦法,包括通過現(xiàn)有的數(shù)據(jù)庫協(xié)議進(jìn)行CS模式的先錄制后執(zhí)行的模式,以及通過socket方式向服務(wù)器發(fā)包方式的測(cè)試方式。這些是常規(guī)書籍上介紹的比較簡單上手的測(cè)試方法,但是不具備通用性,握罩受已有協(xié)議或soc
如何查看數(shù)據(jù)庫的性能狀態(tài)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于如何查看數(shù)據(jù)庫的性能狀態(tài),數(shù)據(jù)庫性能監(jiān)控指南:查看方法簡介,如何使用AWR報(bào)告來診斷數(shù)據(jù)庫性能問題,如何進(jìn)行數(shù)據(jù)庫性能分析?的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),1500元定制網(wǎng)站優(yōu)化全包,先排名后付費(fèi),已為上千家服務(wù),聯(lián)系電話:13518219792
網(wǎng)站題目:數(shù)據(jù)庫性能監(jiān)控指南:查看方法簡介(如何查看數(shù)據(jù)庫的性能狀態(tài))
標(biāo)題URL:http://www.dlmjj.cn/article/djpjhhg.html


咨詢
建站咨詢
