利用typeperf工具收集SQLServer性能数据
通常,DBA会监控和优化SQL Server数据库。DBA希望使用命令行工具。我们经常做的事情之一是收集服务器性能数据,包括CPU、内存和磁盘利用率以及特定于SQL Server的数据。此时,您可以使用命令行工具TypePerf.exe来帮助您捕获这些性能数据。
TypePerf.exe是一个命令行工具,包括将Windows操作系统的性能计数器数据输出到一个命令窗口或者写入一个支持该功能的日志文件格式。
Windows操作系统以对象及其相关计数器的形式提供了大量的性能数据。比如sqlserver提供了SQL Server的统计对象的详细报表,包括登录、注销、数据库连接等信息;有些对象摆脱了计数器模式,变成了具体的实例。以sqlserver为例:数据库对象提供了每个数据库的详细数据文件和事务日志文件大小、已用事务日志的百分比、活动事务等。您可以指定单个数据库或所有数据库的组合作为实例。
需要提醒的是,SQL Server实例中有一个特殊的含义,即命名实例。
作为典型的命令行工具,typeperf也有很多参数可以选择,大的测试提示让你根据实际需要进行调整。打开命令提示符并输入以下命令:
typeperf-?
您将看到以下输出:
用法:
type perf {
|-cf
|-Q[object]
|-QX[object]
}[Options
选项:
-?显示上下文相关的帮助。
-f输出文件格式。默认值是CSV。
-cf包含被监视的性能计数器的文件,每行一个。
-SI实例之间的时间。默认值为1秒。
-o输出文件或SQL数据库的路径。默认值是STDOUT。
-q [object]列出已安装的计数器(无示例)。列出对象的计数器,包括对象名称,如处理器。
-qx [object]列出已安装的计数器(带示例)。列出对象的计数器,包括对象名称,如处理器。
-SC要采集的样本数量。默认值为,所有样本都是在Ctrl+C之前获取的,
-config是一个带有命令选项的设置文件。
-s如果计数器路径中没有指定服务器,则指定要监视的服务器。
-y你不需要对所有问题都回答是。
使用typeperf的最终目的是以可重复的方式捕获性能数据。大的测试提示如:指定你选择一个批处理文件来执行一个特定的操作;默认情况下,执行命令后,性能数据将输出到命令窗口。您还可以使用-f选项指定一个CSV文件(逗号分隔的值),TSV文件(制表符分隔的值)会将性能数据输出到指定的文件。
在使用typeperf捕获性能数据之前,我们需要知道哪些性能对象是可用的。使用以下两个选项,可以获得指定机器上的性能对象列表:
-q [object]列出已安装的计数器(无示例)。
-qx [object]列出已安装的计数器(带示例)。
以上两个选项中,[object]是可选参数。如果指定了此参数,将过滤对象列表。默认情况下,在当前机器上显示性能对象。您可以使用-s来指定其他机器。
输入以下命令以获取SQL Server缓冲区管理器对象的所有技术专家的列表:
type perf-q " SQL Server:Buffer Manager "
您可以看到类似如下的输出内容:
SQL Server:Buffer Manager Buffer cache hit ratio
SQL Server:Buffer Manager page lookups/sec
SQL Server:Buffer Manager free list stalls/sec
SQL Server:Buffer Manager SQL Server:Buffer Manager check point Pages/sec[/Br/]SQL Server:Buffer Manager we lookup maps/sec[/Br/]SQL Server:Buffer Manager we stopped maps/sec[/Br/]SQL Server:Buffer Manager we write maps/sec[/Br/]SQL Server:Buffer Manager we Unmap calls/sec[/Br/]SQL Server:Buffer Manager Awe Unmap Pages/sec[/Br/]SQL Server:Buffer Manager Page Life expectations输入以下命令以获取 挂起的事务
SQLServer:数据库(tempdb)复制。反式。rate
SQL Server:Databases(tempdb)Log Cache Reads/sec
SQL Server:Databases(tempdb)Log Cache Hit Ratio
SQL Server:Databases(tempdb)Bulk Copy Rows/sec
SQL Server:Databases(tempdb)Bulk Copy Throughput/sec
SQL Server:Databases(tempdb)Backup/Restore Throughput/sec
SQL Server:Databases(tempdb)DBCC逻辑扫描字节/sec
由FIND pipeline命令筛选的上述输出结果只包含tempdb数据。
使用命名的SQL Server实例时,性能对象将反映的SQL Server实例的名称。例如,我的计算机正在运行名为sql2000ee的SQL Server 2000 Enterprise Edition实例。然后性能对象被命名为MSSQL$SQL 2000 ee,而不是上面显示的sqlserver。
使用-Q或-qx选项,您可以获得性能计数器的列表。您可以将列表重定向到一个文本文件(比如MyCounters.txt),如果您只想捕获其中的一部分,可以编辑该文件。[/Br/]type perf-qx " SQL Server:databases " | find " tempdb " > > MyCounters.txt[/Br/]在此示例中,我们编辑my counters . txt文件,编辑后的计数器列表如下图所示:
SQL server:databases(_ Total)DBCC逻辑扫描字节/秒[/Br/]SQL Server:databases(tempdb)日志使用百分比[/Br/]SQL Server:Buffer manager缓冲区缓存命中率[/Br/]SQL Server上述命令将从文本文件MyCounters.txt中读取计数器信息,并显示技术值,该值将每秒刷新一次。该命令将一直重复,直到用户按下Ctrl+C快捷键。
type perf-f CSV-o mycounters.csv-si15-cfMyCounters.txt-sc60
在上面的示例中,从文本文件my counters . txt中读取计数器信息,并将技术仪器值写入my counters . CSV文件,每15秒执行一次,总共60次(15
0条评论