[玩转系统] 如何构建 SQL Server 性能监视器脚本
作者:精品下载站 日期:2024-12-14 20:48:53 浏览:14 分类:玩电脑
如何构建 SQL Server 性能监视器脚本
Microsoft SQL Server 可能是资源最密集的服务器应用程序之一。您应该使用 PowerShell 构建 SQL Server 性能监控脚本来帮助对其进行监控!
SQL Server 也可以在 Linux 上运行,但不幸的是,您没有 Windows 上的性能计数器系统。
Windows 内置了丰富的资源,可用于深入了解操作系统本身以及许多其他应用程序(称为性能计数器)的各种性能指标。
Windows 性能监视器是许多 IT 专业人员的主要工具。虽然 Windows 性能监视器是一个可以直观地查看性能统计数据的好工具,但它不一定适合自动化。这就是 PowerShell 发挥作用的地方。
通过使用 PowerShell 查询性能统计信息,您可以使用这些数字作为其他功能的触发器,例如做出决定以自动将数据库移动到更快的存储、自动添加额外的 CPU、内存等。
在本文中,我们将介绍一些最常见的 SQL 性能指标以及如何使用 PowerShell 查询它们。
使用获取计数器
您最熟悉的 PowerShell cmdlet 是 Get-Counter
。 Get-Counter
是一个 cmdlet,可让您从 Windows 查询任意数量的性能指标。单独运行它,您将获得各种常见性能计数器及其当前值的列表。
Get-Counter
,不带参数使用查询本地计算机。我们将查询 SQL 服务器,因此使用 ComputerName
参数来指定您的远程 SQL 服务器。
PS> Get-Counter -ComputerName SQLSRV
当您仅使用 ComputerName
参数运行 Get-Counter
时,cmdlet 会返回一组默认的计数器,这可能不是您想要看到的。
查找 SQL Server 性能计数器
Get-Counter
将返回相同的计数器值。然而,我们将寻找一些对 SQL Server 很重要的计数器。我们将查询:
- 平均。 CPU队列长度
- 平均。磁盘队列长度
- 内存页/秒
- 锁存等待时间
- 缓冲区页预期寿命
- 平均锁定等待时间。
要获取每个计数器的当前值,我们首先需要确定它们属于哪个集合以及它们的正确名称。在任何可以使用多个实例的指标中,我使用星号来获取所有可用实例的平均值,或使用 _total
来获取所有实例的总和。
- 平均。 CPU 队列长度=\System\处理器队列长度
- 平均。磁盘队列长度=\PhysicalDisk()\Avg。磁盘队列长度
- 内存页/秒=\内存\页/秒
- 闩锁等待时间=\SQLServer:Latches\平均闩锁等待时间(毫秒)
- 缓冲区页预期寿命=\SQLServer:Buffer Manager\Page lifeexpectancy
- 平均锁定等待时间=\SQLServer:Locks(_total)\平均等待时间(毫秒)
现在我们已经定义了正确的计数器名称以及计数器所属的计数器集,现在我们可以开始组合一些 PowerShell 代码来创建 SQL Server 性能监视器。
查询SQL性能计数器
为了全面了解性能并消除任何计数器出现一次性峰值的可能性,我将查询每个计数器十次。我将使用一秒的默认采样间隔,这意味着我将在十秒内查询每个计数器十次。这应该给我一个比简单地查询每个计数器一次更实际的数字。
为此,我将使用 Get-Counter
上的 MaxSamples
参数。这将允许我指定每个计数器被查询的最大次数。我将收集所有这些数字,然后在完成后取每个数字的平均值。
因为我只需要值,不一定关心格式,所以我将直接指定 CounterSamples
属性,并指定 CookedValue
属性作为其中的一部分。这只给我实际的整数值。
因为我将查询多个性能计数器,所以最好将它们分组到数组中。我在下面这样做了,并将其分配给变量 $counters
。我选择使用带有“友好”计数器名称和实际计数器名称的哈希表。然后,我可以使用 foreach 循环读取一些内容。
$counters = @(
@{
'Name' = 'Avg. CPU Queue Length'
'CounterName' ='\System\Processor Queue Length'
}
@{
'Name' = 'Avg. Disk Queue Length'
'CounterName' ='\PhysicalDisk()\Avg. Disk Queue Length' }
@{
'Name' = 'Memory Pages/Sec'
'CounterName' = '\Memory\Pages/sec'
}
@{
'Name' = 'Latch Wait Time'
'CounterName' ='\SQLServer:Latches\Average Latch Wait Time (ms)' }
@{
'Name' = 'Buffer Page Life Expectancy'
'CounterName' ='\SQLServer:Buffer Manager\Page life expectancy' }
@{
'Name' = 'Average Lock Wait Time'
'CounterName' ='\SQLServer:Locks(_total)\Average Wait Time (ms)'
}
)
一旦定义了哈希表数组,我将开始读取每个计数器,收集所有十个样本并将平均值添加到计数器实例本身。
最后,我将创建一个 PowerShell 自定义对象,以便在必要时可以轻松地将输出用于其他目的。
$sqlServerName = 'LABSQL'
foreach ($counter in $counters) {
$values = (Get-Counter -ComputerName $sqlServerName -Counter $counter.CounterName -MaxSamples 10).CounterSamples.CookedValue
$counter.Add('Value', ($values | Measure-Object -Average).Average)
[pscustomobject]$counter
}
当您运行上面的代码片段时,您将看到 Get-Counter
将查询 $counters
数组中定义的每个计数器并返回值。由于每个迭代器 ($counter
) 都是一个哈希表,因此脚本会添加一个名为 Value
的属性并对这些值求平均值。
最终得到的结果是单个 pscustomobject 对象,该对象具有表示每个计数器值平均值的单个属性 Value
。
这最终为我们提供了一份很好的报告,显示了 SQL 服务器的性能计数器统计信息!
概括
您可以看到,在 PowerShell 中使用性能计数器非常简单。对我来说最困难的部分就是试图找到计数器名称本身!现在,使用此处显示的 SQL Server 性能监视器脚本的启动并扩展它!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag