第四章——SQLServer2008-2012资源及性能监控(3)

本文为本系列最后一章,监控内存使用。监控服务器的内存是非常重要的事情,有很多情况会引起内存消耗。所以要经常性地做检查。

本文将使用可靠性和性能监视器来获取内存相关的统计。

 

准备工作:

在开始之前,先来了解一下将要用到的计数器:

Ø  Memory: Available Mbytes:提供系统上可用内存的数量。

Ø  Memory: Pages/sec:显示有多少页被用于读或写入硬盘,这些基于硬页面错误。

Ø  Paging File:%Usage:显示挂起的总数的百分比。

Ø  SQL Server: Buffer Manager: Buffer cache hit ratio:返回SQLServer从缓存但不是从硬盘返回的数据的百分比。

Ø  SQL Server: Buffer Manager: Page life expectancy:显示数据驻留在内存的平均秒数

Ø  SQL Server: Buffer Manager: Memory Grants Pending:等待内存工作区授予的进程数

 

步骤:

1、  打开可靠性和性能监视器,在【运行】中输入perfmon.exe

2、  选择性能监视器。

3、  去除所有已存在的计数器。

4、  添加新计数器。

5、  选择所要监视的服务器。

6、  选择下面的计数器:

 Memory: Available Mbytes
 Memory: Pages/sec
 Paging File:%Usage
 SQL Server: Buffer Manager: Buffer cache hit
 SQL Server: Buffer Manager: Page life expectancy
 SQL Server: Memory Manager: Memory Grants Pending

7、  然后点击确定。

上面这些步骤已经在前一章说明了。这里就不累赘了。

 

分析:

       在本文中,再次使用了可靠性和性能监视器这个工具。为了获取内存相关的性能计数器,需要在图形化界面中观察这些计数器。

    首先先检查Memory: Available Mbytes,这个值意味着系统的可用内存。如果发现这个值经常很低,可能表示服务器内存不足,在生产数据库中,这个值可以使用GB为单位。

    然后检查Memory: Pages/sec ,以为这因为硬页面错误导致的从磁盘读或写页面。这个值如果长期高于20,意味着内存不足使得应用程序使用虚拟内存,从而导致挂起。

    接着是Memory: pages/sec ,同时也要检查Paging File:%Usage去预估内存挂起。如果这个值经常超过20%,可能意味着内存不足。

    SQL Server: Buffer Manager: Buffer cache hit ratio:意味着数据从缓存中读取的次数,比较合理的值为大于90%。如果该值很低,可能内存不足或者需要检查索引和查询。如果你需要获得大量数据,这一步可能就会占用大量内存然后引起SQLServer从磁盘读数据而不是从内存。检查索引,确保在大表中能尽可能笔描扫描。并尽可能限制查询返回的结果行。

    检查SQL Server: Buffer Manager: Page life expectancy,表示数据页驻留在内存的秒数。微软建议最少300秒。如果在一个实例中经常低于300秒,意味着数据保留的时间少于5分钟就被移出内存。

    如果SQL Server: Memory Manager: Memory Grants Pending经常建议等待进程,你可能需要增加服务器的内存了。

    不管什么原因,如果你发现内存不足和挂起发生得比较频繁,你首先应该检查是否有非SQL Server的其他应用或者服务耗费了比SQL Server更加多的内存。如果你发现这些应用或者服务,尝试移到别的服务器。如果做不到,那么需要增加更多的内存,以供SQLServer使用。

    如果服务器仅仅工SQL Server使用且没有上面说的情况,那么要分析你的查询和索引,以确保他们是最优化的。如果已经优化好,还是存在这些问题,那么才需要考虑增加内存。

    除了可靠性和性能监视器,还可以使用SQL Server Profiler来监控性能,创建一个用户自定义收集器并存为文件,当你从性能监视器中获取性能数据时,SQL Server Profiler会同步运行。一旦你完成收集,可以把性能数据导入到SQLServer Profiler中供任何时候分析。

### SQL Server 性能监控方法和工具 #### 1. 使用内置性能监视工具 SQL Server 提供了一系列内置的性能监视工具,用于帮助数据库管理员 (DBA) 和开发人员监控、分析并优化数据库性能。这些工具包括系统视图、动态管理视图 (DMVs)SQL Server Profiler 和扩展事件 (Extended Events)[^2]。 以下是几种常用的内置工具及其用途: - **系统视图和函数**:通过查询系统视图可以获取关于服务器配置、会话状态以及资源使用情况的信息。例如,`sys.dm_exec_requests` 可以显示当前正在执行的请求详情。 - **动态管理视图 (DMVs)**:DMVs 是一组只读表形式的数据集合,它们存储有关 SQL Server 实例的状态信息。利用 DMVs 能够深入了解服务器内部运作机制,并诊断潜在问题。比如 `sys.dm_os_wait_stats` 帮助识别等待时间较长的操作。 - **SQL Server Profiler**:这是一个图形化用户界面工具,允许捕获和回放 T-SQL 批处理语句及其他活动日志条目。它对于追踪长时间运行或者异常行为非常有用。 - **扩展事件 (Extended Events)**:作为轻量级跟踪框架的一部分,扩展事件提供了更高效的方式来收集详细的性能数据而不会显著增加开销。相比传统的 SQL Trace 或者 Profiler Session 更加灵活可控。 ```sql -- 查询当前活跃连接及对应CPU时间和逻辑读取次数 SELECT session_id, cpu_time, logical_reads FROM sys.dm_exec_sessions; ``` #### 2. 应用程序管理器的应用 除了上述提到的标准组件外,第三方解决方案也可以增强对 SQL Server 的全面洞察力。例如,“Applications Manager”的 SQL Server 性能监视器不仅具备强大的监测能力还支持设置阈值告警等功能,从而让用户轻松掌握整个环境下的表现趋势[^1]。 此产品特色在于以下几个方面: - 它实现了端到端可视化; - 支持复杂的报警策略定制; - 用户友好型设计降低了学习曲线难度; 因此,在众多同类软件当中脱颖而出成为性价比之选之一。 #### 3. 自定义性能计数器 当现有的标准指标不足以满足具体业务场景的需求时,则可以通过创建自定义性能计数器来补充缺失维度。这种方法特别适合那些希望针对特殊工作负载模式进行深入研究的企业客户群体[^4]。 构建过程大致分为几个阶段——注册新类别对象、定义所需属性字段列表最后编写实际采集逻辑代码片段完成部署上线前测试验证流程等等步骤均需谨慎对待以免引入不必要的风险因素影响整体稳定性水平。 ```csharp // 注册新的性能计数器类别的示例 PerformanceCounterCategory.Create( "MyCustomCategory", "Description of my custom category.", PerformanceCounterCategoryType.SingleInstance, new CounterCreationDataCollection { new CounterCreationData("SampleCount64Value", "An example counter that uses the SampleCount64 type.", PerformanceCounterType.SampleCount64), ... }); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值