Windows Server 2008 數(shù)據(jù)庫性能監(jiān)控
在系統(tǒng)資源視圖中并列顯示了當(dāng)前服務(wù)器CPU、磁盤、網(wǎng)絡(luò)及內(nèi)存的性能曲線圖。這些曲線圖動態(tài)反映了系統(tǒng)資源的實時利用狀況。在這一組曲線圖的下方,我們可以展開查看各進(jìn)程的資源利用狀況。在此前的Windows版本中,進(jìn)程級別的實時性能數(shù)據(jù)十分有限,并且僅能通過Windows任務(wù)管理器查看。
與Windows Server 2003一樣,我們可以通過鍵入命令行指令“perfmon”來打開Windows Server 2008 可靠性與性能監(jiān)測器。其默認(rèn)初始界面即為系統(tǒng)資源視圖,如圖1所示:
圖1 Windows Server 2008可靠性與性能監(jiān)測器系統(tǒng)資源視圖
系統(tǒng)數(shù)據(jù)搜集組是Windows Server 2008在系統(tǒng)性能監(jiān)測方面新增的一個重要功能。通過它,用戶可以把相關(guān)的性能數(shù)據(jù)整合在一起進(jìn)行搜集,這樣就可以適應(yīng)各種不同的性能監(jiān)測需要。我們還可以設(shè)定數(shù)據(jù)搜集的時間計劃,回放已搜集的性能日志,保存搜集模版用于監(jiān)測其它服務(wù)器等。
如圖2、3所示,我可以通過向?qū)?chuàng)建系統(tǒng)數(shù)據(jù)搜集組,也可以把性能監(jiān)測器的當(dāng)前配置結(jié)果保存為新的系統(tǒng)數(shù)據(jù)搜集組。
圖2 Windows Server 2008系統(tǒng)數(shù)據(jù)搜集組向?qū)?/p>
圖3 基于Windows Server 2008性能監(jiān)測器當(dāng)前配置新建系統(tǒng)數(shù)據(jù)搜集組
Windows Server 2008 可靠性與性能監(jiān)測器整合了服務(wù)器性能優(yōu)化建議工具的診斷報表功能(在Windows Server 2003中,優(yōu)化建議工具是需要單獨下載的)。通過診斷報表,可以快速顯示任一性能數(shù)據(jù)搜集組的日志內(nèi)容;通過其縮放功能,可以方便地查看任意時段的性能曲線,從而準(zhǔn)確評估優(yōu)化措施對性能的實際影響。
Windows Server 2008系統(tǒng)診斷報表的界面與Windows Server 2003性能監(jiān)測器的系統(tǒng)性能監(jiān)視界面類似。值得一提的是,打開Windows Server 2008的診斷報表后,我們可以選定時間段進(jìn)行縮放以便更仔細(xì)的查看性能數(shù)據(jù)。另外,診斷報表還提供了多種數(shù)據(jù)展現(xiàn)形式用以全面分析性能數(shù)據(jù)日志。如圖4、5所示。
圖4 Windows Server 2008性能診斷報表的時間窗縮放功能
圖5 Windows Server 2008性能診斷報表的多種數(shù)據(jù)展現(xiàn)多樣性
SQL Server 2008性能監(jiān)測對象
SQL Server 2008提供了豐富的性能監(jiān)測對象及其計數(shù)器。在一臺服務(wù)器上,同一個性能對象可以有多個實例,例如Databases對象必須與某個具體的數(shù)據(jù)庫實例相關(guān)聯(lián)。對于默認(rèn)數(shù)據(jù)庫實例,其性能計數(shù)器名稱的前綴為SQL Server:<對象名稱>;對于命名數(shù)據(jù)庫實例,其性能計數(shù)器名稱的前綴為MSSQL$<實例名稱>:<對象名稱>。另外,某些性能對象只能有一個實例,例如MemoryManager。
以下針對Windows Server 2008數(shù)據(jù)庫環(huán)境的主要性能瓶頸介紹常用的性能計數(shù)器,并說明其具體含義。
CPU性能瓶頸
性能監(jiān)測器是確定CPU性能瓶頸最簡便的工具:如果“Processor:% Processor Time”計數(shù)器持續(xù)高于80%,則表明此CPU負(fù)荷過高,它很可能是系統(tǒng)性能瓶頸所在,可以考慮升級CPU。
SQL語句的重新編譯
過度的SQL語句編譯或重新編譯也會降低數(shù)據(jù)庫查詢的響應(yīng)性能。用戶可以通過SQL Server 2008的性能計數(shù)器來監(jiān)測并比較查詢編譯與查詢請求的數(shù)量。理想情況下,前者數(shù)量應(yīng)遠(yuǎn)遠(yuǎn)少于后者。在性能監(jiān)測器中,前者對應(yīng)于SQL Server: SQL Statistics: SQL Recompilations/sec及SQL Server: SQL Statistics: SQL Compilations/sec
,后者對應(yīng)于SQL Server: SQL Statistics: Batch Requests/sec。如果SQL編譯相對于用戶查詢過多的話,首先應(yīng)確定用戶是否提交了過多的隨機(jī)查詢,然后再考慮CPU等其他可能的性能瓶頸。
SQL Server臨時庫(tempdb)瓶頸
大量使用或清除臨時表、表變量會導(dǎo)致tempdb的過度使用,從而降低系統(tǒng)性能。在Windows 2008 性能監(jiān)測器中,有關(guān)這方面常用的SQL Server 2008性能計數(shù)器有:
SQL Server:Access Methods\Workfiles Created /Sec
SQL Server:Access Methods\Worktables Created /Sec
SQL Server:Access Methods\Mixed Page Allocations /Sec
SQL Server:General Statistics\Temp Tables Created /Sec
SQL Server:General Statistics\Temp Tables for destruction
游標(biāo)(Cursor)性能瓶頸
在Windows Server 2008 性能監(jiān)測器中,有關(guān)SQL Server 2008游標(biāo)性能監(jiān)測的常用計數(shù)器為:SQL Server:Cursor Manager By Type – Cursor Requests/Sec。通過它,我們可以知道數(shù)據(jù)庫中游標(biāo)執(zhí)行的情況。如果由于大量小批量游標(biāo)讀取而導(dǎo)致Windows 2008數(shù)據(jù)庫服務(wù)器的CPU利用率過高,則此計數(shù)器通常會顯示為每秒數(shù)百次的游標(biāo)操作。此外,SQL Server 2008未提供關(guān)于游標(biāo)緩存大小的計數(shù)器。
綜上所述,我們可以通過Windows Server 2008的可靠性與性能監(jiān)測器來對SQL Server 2008的性能計數(shù)器進(jìn)行檢測。根據(jù)需要組合性能計數(shù)器,保存為數(shù)據(jù)搜集組,在設(shè)定的時間執(zhí)行,然后通過性能診斷報表查看、分析。
有關(guān)SQL Server 2008性能計數(shù)器的更多信息,請參考微軟官方文檔http://msdn.microsoft.com/en-us/library/ms190382.aspx)。
SQL Server 2008管理數(shù)據(jù)倉庫
與Windows Server 2008的性能數(shù)據(jù)搜集組類似,SQL Server 2008也提供了新的數(shù)據(jù)庫性能搜集與分析工具。它主要搜集4大類性能數(shù)據(jù),它們涉及T-SQL查詢相關(guān)數(shù)據(jù)、SQL Server系統(tǒng)追蹤(SQL Trace)數(shù)據(jù)、性能計數(shù)器數(shù)據(jù)以及查詢處理活動相關(guān)的數(shù)據(jù)。它們有助于以下系統(tǒng)性能狀況的評估、管理規(guī)劃及性能優(yōu)化:
磁盤利用狀況:搜集SQL Server數(shù)據(jù)庫級的磁盤利用數(shù)據(jù),通過它們來幫助系統(tǒng)管理員了解不同數(shù)據(jù)庫對物理磁盤的占用情況,做好磁盤空間的規(guī)劃;
服務(wù)器活動:搜集SQL Server安裝實例級的系統(tǒng)資源利用數(shù)據(jù),如CPU、內(nèi)存、I/O設(shè)備等。這些數(shù)據(jù)有助于系統(tǒng)管理員監(jiān)測近期或長期的系統(tǒng)資源利用趨勢,從中發(fā)現(xiàn)潛在資源利用瓶頸。這些信息同樣可用于管理員的系統(tǒng)資源規(guī)劃;
查詢統(tǒng)計操作:搜集SQL語句級的查詢統(tǒng)計信息,包含查詢語句及其執(zhí)行計劃。這些數(shù)據(jù)有助于系統(tǒng)管理員確認(rèn)占用資源最多的查詢語句,從而有針對性地進(jìn)行查詢性能優(yōu)化。
這些性能數(shù)據(jù)是通過SSIS任務(wù)包來搜集的。這些任務(wù)包可以手動執(zhí)行,也可以設(shè)置為定時或周期性執(zhí)行。搜集的數(shù)據(jù)被存入專用的SQL Server數(shù)據(jù)倉庫,它被稱為SQL Server管理數(shù)據(jù)倉庫,簡稱MDW。某個MDW可用于保存來自多個SQL Server安裝實例的性能數(shù)據(jù)。被檢測的目標(biāo)數(shù)據(jù)庫服務(wù)器可以位于遠(yuǎn)端,性能數(shù)據(jù)通過其上定時執(zhí)行的SSIS任務(wù)包傳入MDW。為保證搜集效率,數(shù)據(jù)搜集任務(wù)包可以把所搜集的數(shù)據(jù)存入目標(biāo)服務(wù)器的臨時文件中保存,等到定時上傳時刻再傳入MDW。所搜集的性能數(shù)據(jù)通過預(yù)先設(shè)計的SQL Server報表在SQL Server 2008管理器(SSMS)中查看,用于性能分析。我們不僅可以設(shè)定數(shù)據(jù)搜集或上傳的時間間隔,還可以根據(jù)需要自定義所需搜集的性能數(shù)據(jù)集以及性能報表。
有關(guān)SQL Server管理數(shù)據(jù)倉庫(MDW)的更多信息,請參考MSDN技術(shù)文檔:http://msdn.microsoft.com/en-us/library/dd939169.aspx
【編輯推薦】