Manjot Asked: 2014-05-27 19:05:49 +0800 CST2014-05-27 19:05:49 +0800 CST 2014-05-27 19:05:49 +0800 CST T-SQL 查找内存、CPU 和 IO 利用率 772 我想在一周或一个月内确定 SQL Server 2005 及更高版本服务器上的数据库的资源(CPU、内存和 IO)使用情况。有人可以帮忙吗? sql-server monitoring 1 个回答 Voted Best Answer Milena Petrovic 2014-05-28T02:33:35+08:002014-05-28T02:33:35+08:00 您可以使用几个选项: 您可以使用使用动态管理视图 (DMV),例如 sys.dm_exec_sessions、sys.dm_os_performance_counters、sys.dm_os_memory_brokers、sys.dm_os_memory_nodes、sys.dm_exec_procedure_stats、sys._dm_os_sys_info、sys.dm_exec_requests、sys.dm_exec_requests 等等,具体取决于关于您实际想要监控的内容。 由于 SQL Server 不会将性能指标值存储在存档表中,因此您可以按计划查询视图并将结果插入到将用作存储库的表中。然后您可以轻松地查询和分析记录。 另一个问题是 - 要监控哪些计数器。 对于处理器使用情况:处理器:% 处理器时间,处理器队列长度 对于内存、可用内存字节、总服务器内存和目标服务器内存 您可以在此处找到推荐用于监视的计数器的完整列表:性能监视器计数器 请注意,当您使用 dm_os_performance_counters 视图时,必须了解 counter_type。有五个不同的值,每个值类型的当前值计算方式不同。你在这里有例子和解释:sys.dm_os_performance_counters 另一种选择是使用第三方工具来收集您要监控的指标,将它们存储在存储库中,并显示您选择的时间段内的历史数据。由于历史数据存储在 SQL 表中,您还可以轻松地自己查询数据并创建报表。 这样的工具是ApexSQL Monitor,它内置了最后一天、一周和一个月的图表。它将很快提供报告。 免责声明:我作为支持工程师在 ApexSQL 工作
您可以使用几个选项:
您可以使用使用动态管理视图 (DMV),例如 sys.dm_exec_sessions、sys.dm_os_performance_counters、sys.dm_os_memory_brokers、sys.dm_os_memory_nodes、sys.dm_exec_procedure_stats、sys._dm_os_sys_info、sys.dm_exec_requests、sys.dm_exec_requests 等等,具体取决于关于您实际想要监控的内容。
由于 SQL Server 不会将性能指标值存储在存档表中,因此您可以按计划查询视图并将结果插入到将用作存储库的表中。然后您可以轻松地查询和分析记录。
另一个问题是 - 要监控哪些计数器。
对于处理器使用情况:处理器:% 处理器时间,处理器队列长度
对于内存、可用内存字节、总服务器内存和目标服务器内存
您可以在此处找到推荐用于监视的计数器的完整列表:性能监视器计数器
请注意,当您使用 dm_os_performance_counters 视图时,必须了解 counter_type。有五个不同的值,每个值类型的当前值计算方式不同。你在这里有例子和解释:sys.dm_os_performance_counters
另一种选择是使用第三方工具来收集您要监控的指标,将它们存储在存储库中,并显示您选择的时间段内的历史数据。由于历史数据存储在 SQL 表中,您还可以轻松地自己查询数据并创建报表。
这样的工具是ApexSQL Monitor,它内置了最后一天、一周和一个月的图表。它将很快提供报告。
免责声明:我作为支持工程师在 ApexSQL 工作