通常DBA在監(jiān)控和優(yōu)化SQL Server數(shù)據(jù)庫DBA,都想利用命令行工具。其中經(jīng)常要做的一件事情,就是收集服務器性能數(shù)據(jù),包括CPU ,內(nèi)存和磁盤利用率以及SQL Server特定數(shù)據(jù)。這時你就可以利用TypePerf.exe這個命令行工具來幫你捕獲這些性能數(shù)據(jù)。
TypePerf.exe是一個命令行工具,包括把Windows操作系統(tǒng)的性能計數(shù)器數(shù)據(jù)輸出到命令窗口或?qū)懭氲街С衷摴δ艿娜罩疚募袷街小?BR> Windows操作系統(tǒng)以對象及其相關聯(lián)的計數(shù)器的形式,提供了非常多的性能數(shù)據(jù)。例如, SQL Server提供了sqlserver統(tǒng)計對象的詳細報告,包括了登錄、注銷、數(shù)據(jù)庫連接等信息;有些對象擺脫了計數(shù)器方式,轉(zhuǎn)化為特定的實例。還是以sqlserver為例:數(shù)據(jù)庫對象詳細提供了每一個數(shù)據(jù)庫的數(shù)據(jù)文件和事務日志文件大小,已使用事務日志的百分比,活動事務等。您可以指定一個單一的數(shù)據(jù)庫或所有數(shù)據(jù)庫結合在一起,作為該實例。
需要提醒的是,在SQL Server實例有個特殊的含義,即命名實例。
作為是典型的命令行工具,typeperf也有許多參數(shù)供選擇,考試大提示讓您根據(jù)實際需要進行調(diào)整。打開一個命令提示符并輸入以下命令:
typeperf -?
您會看到下面的輸出:
用法:
typeperf {
| -cf <文件名>
| -q [object]
| -qx [object]
} [選項]
參數(shù):
要監(jiān)視的性能計數(shù)器。
選項:
-? 顯示跟上下文相關的幫助。
-f 輸出文件格式。默認值是 CSV。
-cf <文件名> 含有監(jiān)視的性能計數(shù)器的文件,一個計數(shù)器一行。
-si <[[hh:]mm:]ss> 示例間的時間。默認值是 1 秒。
-o <文件名> 輸出文件或 SQL 數(shù)據(jù)庫的路徑。默認值為 STDOUT。
-q [object] 列出已安裝的計數(shù)器(無范例)。要列出某個對象的計數(shù)器,包括對象名,如 Processor。
-qx [object] 列出已安裝的計數(shù)器(帶范例)。要列出某個對象的計數(shù)器,包括對象名,如 Processor。
-sc 要收集的示例數(shù)量。默認值為,在 CTRL+C 之前都進行采樣。
-config <文件名> 含有命令選項的設置文件。
-s 在計數(shù)器路徑中沒有指定服務器的情況下要監(jiān)視的服務器。
-y 不用提示對所有問題都回答 yes。
使用typeperf的最終目標,是采用一種可重復的方式來捕捉性能數(shù)據(jù)??荚嚧筇崾纠纾褐付x擇在一個批處理文件,執(zhí)行特定操作; 默認情況下該命令執(zhí)行后,性能數(shù)據(jù)將輸出到命令窗口,您也可以使用- f選項指定一個CSV文件(逗號分隔值) , TSV文件(制表符分隔值)將性能數(shù)據(jù)輸出到指定文件中。
使用typeperf捕捉性能數(shù)據(jù)之前,我們需要明確哪些性能對象時可用的。采用以下兩個選項,您可以獲得指定的機器上的性能對象列表:
-q [object] 列出已安裝的計數(shù)器(無范例)。
-qx [object] 列出已安裝的計數(shù)器(帶范例)。
在上述兩個選項中,[object]是可選的參數(shù),如果指定了該參數(shù),將對對象列表進行過濾。默認是顯示當前機器上的性能對象,你可以用-s 來指定其他的機器。
輸入以下命令可以獲得SQL Server緩沖管理器對象的所有技術器列表:
TYPEPERF -q "SQLServer:Buffer Manager"
你可以看到類似以下的輸出內(nèi)容:
SQLServer:Buffer ManagerBuffer cache hit ratio
SQLServer:Buffer ManagerPage lookups/sec
SQLServer:Buffer ManagerFree list stalls/sec
SQLServer:Buffer ManagerFree pages
SQLServer:Buffer ManagerTotal pages
SQLServer:Buffer ManagerTarget pages
SQLServer:Buffer ManagerDatabase pages
SQLServer:Buffer ManagerReserved pages
SQLServer:Buffer ManagerStolen pages
SQLServer:Buffer ManagerLazy writes/sec
SQLServer:Buffer ManagerReadahead pages/sec
SQLServer:Buffer ManagerPage reads/sec
SQLServer:Buffer ManagerPage writes/sec
SQLServer:Buffer ManagerCheckpoint pages/sec
SQLServer:Buffer ManagerAWE lookup maps/sec
SQLServer:Buffer ManagerAWE stolen maps/sec
SQLServer:Buffer ManagerAWE write maps/sec
SQLServer:Buffer ManagerAWE unmap calls/sec
SQLServer:Buffer ManagerAWE unmap pages/sec
SQLServer:Buffer ManagerPage life expectancy 輸入以下命令可以獲得tempdb這個數(shù)據(jù)庫實例所有的計數(shù)器列表:
TYPEPERF -qx "SQLServer:Databases" | FIND "tempdb"
你可以看到類似以下的輸出內(nèi)容:
SQLServer:Databases(tempdb)Data File(s) Size (KB)
SQLServer:Databases(tempdb)Log File(s) Size (KB)
SQLServer:Databases(tempdb)Log File(s) Used Size (KB)
SQLServer:Databases(tempdb)Percent Log Used
SQLServer:Databases(tempdb)Active Transactions
SQLServer:Databases(tempdb)Transactions/sec
SQLServer:Databases(tempdb)Repl. Pending Xacts
SQLServer:Databases(tempdb)Repl. Trans. Rate
SQLServer:Databases(tempdb)Log Cache Reads/sec
SQLServer:Databases(tempdb)Log Cache Hit Ratio
SQLServer:Databases(tempdb)Bulk Copy Rows/sec
SQLServer:Databases(tempdb)Bulk Copy Throughput/sec
SQLServer:Databases(tempdb)Backup/Restore Throughput/sec
SQLServer:Databases(tempdb)DBCC Logical Scan Bytes/sec
SQLServer:Databases(tempdb)Shrink Data Movement Bytes/sec
SQLServer:Databases(tempdb)Log Flushes/sec
SQLServer:Databases(tempdb)Log Bytes Flushed/sec
SQLServer:Databases(tempdb)Log Flush Waits/sec
SQLServer:Databases(tempdb)Log Flush Wait Time
SQLServer:Databases(tempdb)Log Truncations
SQLServer:Databases(tempdb)Log Growths
SQLServer:Databases(tempdb)Log Shrinks
上面這個實例( - x選項)報告了每個SQL Server數(shù)據(jù)庫所包含的所有的SQLServer:Databases對象(所有與數(shù)據(jù)庫相關聯(lián)的所有實例)的性能計數(shù)器。上面的輸出結果,通過FIND管道命令對結果進行過濾,只包含了tempdb數(shù)據(jù)。
當您正在使用一個命名的SQL Server實例,性能對象將反映的SQL Server實例的名稱。例如我的計算機運行的一個實例的SQL Server 2000 Enterprise Edition的是名為sql2000ee ; 則性能對象就被命名為mssql$sql2000ee,而不是上面所示的sqlserver。
使用- Q或- qx選項,可以獲得性能計數(shù)器列表,可以將該列表重定向到一個文本文件(如MyCounters.txt),如果你只想捕獲其中幾個性能計數(shù)器,可以編輯該文件。
TYPEPERF -qx "SQLServer:Databases" | FIND "tempdb" >>MyCounters.txt
本例中我們對MyCounters.txt 文件進行編輯,編輯后的計數(shù)器列表如下圖所示:
SQLServer:Databases(_Total)DBCC Logical Scan Bytes/sec
SQLServer:Databases(tempdb)Percent Log Used
SQLServer:Buffer ManagerBuffer cache hit ratio
SQLServer:General StatisticsUser Connections
SQLServer:Locks(_Total)Lock Requests/sec
SQLServer:SQL StatisticsBatch Requests/sec
執(zhí)行typeperf命令行時,帶上- CF<文件名>選項,這樣該命令執(zhí)行時,就將從制定的文本文件中讀取計數(shù)器列表了。上面這個命令將從MyCounters.txt這個文本文件中讀取計數(shù)器信息,并顯示技術器數(shù)值,每隔一秒鐘刷新一次。該命令將一直重復執(zhí)行,直至用戶按下了Ctrl+C快捷鍵。
TYPEPERF -f CSV -o MyCounters.csv -si 15 -cf MyCounters.txt -sc 60
上面這個例子,從MyCounters.txt這個文本文件中讀取計數(shù)器信息,將技術器數(shù)值寫入到MyCounter.csv文件中,每隔15秒鐘執(zhí)行一次,共執(zhí)行60次(15分鐘后執(zhí)行完)。
TypePerf.exe是一個命令行工具,包括把Windows操作系統(tǒng)的性能計數(shù)器數(shù)據(jù)輸出到命令窗口或?qū)懭氲街С衷摴δ艿娜罩疚募袷街小?BR> Windows操作系統(tǒng)以對象及其相關聯(lián)的計數(shù)器的形式,提供了非常多的性能數(shù)據(jù)。例如, SQL Server提供了sqlserver統(tǒng)計對象的詳細報告,包括了登錄、注銷、數(shù)據(jù)庫連接等信息;有些對象擺脫了計數(shù)器方式,轉(zhuǎn)化為特定的實例。還是以sqlserver為例:數(shù)據(jù)庫對象詳細提供了每一個數(shù)據(jù)庫的數(shù)據(jù)文件和事務日志文件大小,已使用事務日志的百分比,活動事務等。您可以指定一個單一的數(shù)據(jù)庫或所有數(shù)據(jù)庫結合在一起,作為該實例。
需要提醒的是,在SQL Server實例有個特殊的含義,即命名實例。
作為是典型的命令行工具,typeperf也有許多參數(shù)供選擇,考試大提示讓您根據(jù)實際需要進行調(diào)整。打開一個命令提示符并輸入以下命令:
typeperf -?
您會看到下面的輸出:
用法:
typeperf {
| -cf <文件名>
| -q [object]
| -qx [object]
} [選項]
參數(shù):
要監(jiān)視的性能計數(shù)器。
選項:
-? 顯示跟上下文相關的幫助。
-f 輸出文件格式。默認值是 CSV。
-cf <文件名> 含有監(jiān)視的性能計數(shù)器的文件,一個計數(shù)器一行。
-si <[[hh:]mm:]ss> 示例間的時間。默認值是 1 秒。
-o <文件名> 輸出文件或 SQL 數(shù)據(jù)庫的路徑。默認值為 STDOUT。
-q [object] 列出已安裝的計數(shù)器(無范例)。要列出某個對象的計數(shù)器,包括對象名,如 Processor。
-qx [object] 列出已安裝的計數(shù)器(帶范例)。要列出某個對象的計數(shù)器,包括對象名,如 Processor。
-sc 要收集的示例數(shù)量。默認值為,在 CTRL+C 之前都進行采樣。
-config <文件名> 含有命令選項的設置文件。
-s 在計數(shù)器路徑中沒有指定服務器的情況下要監(jiān)視的服務器。
-y 不用提示對所有問題都回答 yes。
使用typeperf的最終目標,是采用一種可重復的方式來捕捉性能數(shù)據(jù)??荚嚧筇崾纠纾褐付x擇在一個批處理文件,執(zhí)行特定操作; 默認情況下該命令執(zhí)行后,性能數(shù)據(jù)將輸出到命令窗口,您也可以使用- f選項指定一個CSV文件(逗號分隔值) , TSV文件(制表符分隔值)將性能數(shù)據(jù)輸出到指定文件中。
使用typeperf捕捉性能數(shù)據(jù)之前,我們需要明確哪些性能對象時可用的。采用以下兩個選項,您可以獲得指定的機器上的性能對象列表:
-q [object] 列出已安裝的計數(shù)器(無范例)。
-qx [object] 列出已安裝的計數(shù)器(帶范例)。
在上述兩個選項中,[object]是可選的參數(shù),如果指定了該參數(shù),將對對象列表進行過濾。默認是顯示當前機器上的性能對象,你可以用-s 來指定其他的機器。
輸入以下命令可以獲得SQL Server緩沖管理器對象的所有技術器列表:
TYPEPERF -q "SQLServer:Buffer Manager"
你可以看到類似以下的輸出內(nèi)容:
SQLServer:Buffer ManagerBuffer cache hit ratio
SQLServer:Buffer ManagerPage lookups/sec
SQLServer:Buffer ManagerFree list stalls/sec
SQLServer:Buffer ManagerFree pages
SQLServer:Buffer ManagerTotal pages
SQLServer:Buffer ManagerTarget pages
SQLServer:Buffer ManagerDatabase pages
SQLServer:Buffer ManagerReserved pages
SQLServer:Buffer ManagerStolen pages
SQLServer:Buffer ManagerLazy writes/sec
SQLServer:Buffer ManagerReadahead pages/sec
SQLServer:Buffer ManagerPage reads/sec
SQLServer:Buffer ManagerPage writes/sec
SQLServer:Buffer ManagerCheckpoint pages/sec
SQLServer:Buffer ManagerAWE lookup maps/sec
SQLServer:Buffer ManagerAWE stolen maps/sec
SQLServer:Buffer ManagerAWE write maps/sec
SQLServer:Buffer ManagerAWE unmap calls/sec
SQLServer:Buffer ManagerAWE unmap pages/sec
SQLServer:Buffer ManagerPage life expectancy 輸入以下命令可以獲得tempdb這個數(shù)據(jù)庫實例所有的計數(shù)器列表:
TYPEPERF -qx "SQLServer:Databases" | FIND "tempdb"
你可以看到類似以下的輸出內(nèi)容:
SQLServer:Databases(tempdb)Data File(s) Size (KB)
SQLServer:Databases(tempdb)Log File(s) Size (KB)
SQLServer:Databases(tempdb)Log File(s) Used Size (KB)
SQLServer:Databases(tempdb)Percent Log Used
SQLServer:Databases(tempdb)Active Transactions
SQLServer:Databases(tempdb)Transactions/sec
SQLServer:Databases(tempdb)Repl. Pending Xacts
SQLServer:Databases(tempdb)Repl. Trans. Rate
SQLServer:Databases(tempdb)Log Cache Reads/sec
SQLServer:Databases(tempdb)Log Cache Hit Ratio
SQLServer:Databases(tempdb)Bulk Copy Rows/sec
SQLServer:Databases(tempdb)Bulk Copy Throughput/sec
SQLServer:Databases(tempdb)Backup/Restore Throughput/sec
SQLServer:Databases(tempdb)DBCC Logical Scan Bytes/sec
SQLServer:Databases(tempdb)Shrink Data Movement Bytes/sec
SQLServer:Databases(tempdb)Log Flushes/sec
SQLServer:Databases(tempdb)Log Bytes Flushed/sec
SQLServer:Databases(tempdb)Log Flush Waits/sec
SQLServer:Databases(tempdb)Log Flush Wait Time
SQLServer:Databases(tempdb)Log Truncations
SQLServer:Databases(tempdb)Log Growths
SQLServer:Databases(tempdb)Log Shrinks
上面這個實例( - x選項)報告了每個SQL Server數(shù)據(jù)庫所包含的所有的SQLServer:Databases對象(所有與數(shù)據(jù)庫相關聯(lián)的所有實例)的性能計數(shù)器。上面的輸出結果,通過FIND管道命令對結果進行過濾,只包含了tempdb數(shù)據(jù)。
當您正在使用一個命名的SQL Server實例,性能對象將反映的SQL Server實例的名稱。例如我的計算機運行的一個實例的SQL Server 2000 Enterprise Edition的是名為sql2000ee ; 則性能對象就被命名為mssql$sql2000ee,而不是上面所示的sqlserver。
使用- Q或- qx選項,可以獲得性能計數(shù)器列表,可以將該列表重定向到一個文本文件(如MyCounters.txt),如果你只想捕獲其中幾個性能計數(shù)器,可以編輯該文件。
TYPEPERF -qx "SQLServer:Databases" | FIND "tempdb" >>MyCounters.txt
本例中我們對MyCounters.txt 文件進行編輯,編輯后的計數(shù)器列表如下圖所示:
SQLServer:Databases(_Total)DBCC Logical Scan Bytes/sec
SQLServer:Databases(tempdb)Percent Log Used
SQLServer:Buffer ManagerBuffer cache hit ratio
SQLServer:General StatisticsUser Connections
SQLServer:Locks(_Total)Lock Requests/sec
SQLServer:SQL StatisticsBatch Requests/sec
執(zhí)行typeperf命令行時,帶上- CF<文件名>選項,這樣該命令執(zhí)行時,就將從制定的文本文件中讀取計數(shù)器列表了。上面這個命令將從MyCounters.txt這個文本文件中讀取計數(shù)器信息,并顯示技術器數(shù)值,每隔一秒鐘刷新一次。該命令將一直重復執(zhí)行,直至用戶按下了Ctrl+C快捷鍵。
TYPEPERF -f CSV -o MyCounters.csv -si 15 -cf MyCounters.txt -sc 60
上面這個例子,從MyCounters.txt這個文本文件中讀取計數(shù)器信息,將技術器數(shù)值寫入到MyCounter.csv文件中,每隔15秒鐘執(zhí)行一次,共執(zhí)行60次(15分鐘后執(zhí)行完)。