采集SQL Server 性能计数器并用SSRS创建报表

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

问题描述

我想监控一些性能指标,但不想购买第三方监控产品。有没有方法采集性能指标数据并通过SQL Server Reporting Services展示图形化的趋势数据。

 

解决方案

有些不同的方法去采集特定的性能指标数据,但是这里我们将专注于用sys.dm_os_performance_counters DMV,以及用SQL Server Reporting Services图表去查看更具可读性的数据。这个动态性能视图不包含所有的性能计数器数据,但是它包含与SQL Server相关的计数值。(注意:在这个DMV中的有些计数值是从上次重启之后的累加值)

 

你可以查询这个DMV用下面的查询语句:

1
SELECT  FROM  sys.dm_os_performance_counters

clip_image001

从上面的截屏中,看到数据是不易阅读的。它仅显示了在你查询时刻返回的当前值,所以你不知道之前的值,所以你不知道在数据库运行期间性能数据的波动情况。

 

采集SQL Server监控报表数据


出于简化目的,我们专注于一个计数器值,Page Life Expectancy (PLE)。我将显示如何去采集数据和创建供分析的图表。


首先,我们将创建存储性能指标的表:

1
2
3
4
5
6
CREATE  TABLE  [dbo].[CounterCollections](    
[ID] [ int ] IDENTITY(1,1)  NOT  NULL ,     
[object_name] [ varchar ](128)  NOT  NULL ,     
[counter_name] [ varchar ](128)  NOT  NULL ,     
[cntr_value] [ bigint NOT  NULL ,     
[collection_datetime] [datetime]  NOT  NULL  )


接下来,我们需要一个脚本,用于插入数据到这个表中:

1
2
3
4
5
INSERT  INTO  CounterCollections    
SELECT  object_name, counter_name, cntr_value, GETDATE() collection_datetime     
FROM  sys.dm_os_performance_counters     
WHERE  object_name =  'SQLServer:Buffer Manager'     
AND  counter_name =  'Page life expectancy'


最后,我们需要创建一个SQL Server Agent作业,我们将会运行这个脚本在计划任务中:

clip_image002


我将会每5分钟运行该作业:

clip_image004

 

创建SQL Server监控报表


在该表采集数据的时候,我们可以利用Business Intelligence Development Studio (BIDS) 或 SQL Server Data Tools (SSDT) 创建一个显示数据的SSRS报表。


在这个例子,我们用SSDT。选择File,New Project。在New Project对话框,选择Report Server Project,并输入项目的名字:

clip_image006


右击Shared Data Sources,点击Add New Data Source:

clip_image007


对这个例子,我们使用localhost:

clip_image009


下一步,右击Shared Dataset,点击Add New Dataset:

clip_image010


在此,我们构建在报表中使用到的查询语句。我将用下列语句,WHERE从句创建StartTime和EndTime时间参数:

clip_image012


接下来,点击Reports,Add,New Item:

clip_image014


点击Report,输入报表名称:

clip_image016


一个新的报表创建了。在Report Data窗口,右击Datasets并点击Add Dataset:

clip_image018


点击之前我们创建的Dataset,点击OK:

clip_image020


展开Parameters,双击每个参数并设置参数的类型为Date/Time:

clip_image022


从Toolbox窗口,点击Chart并拖拽到设计视图:

clip_image023


选择Line图表:

clip_image025


点击Chart,将会看到Chart Data窗口出现。添加cutr_value到Values,添加collection_datatime到Category Groups:

clip_image027


我们现在点击Preview去预览一下Page Life Expectancy相关的趋势图:

clip_image029


一旦数据正确显示,你可以格式化图表让它更友好显示:

clip_image031


这只是一个使用Page Life Expectany计数器的例子。你可以创建这种类型的报表用任何SQL Server提供的计数器。这种报表作为一种监控解决方案或用来定位SQL Server性能瓶颈。

 

另一个多计数器SSRS监控报表示例


这是另一个报表示例,你可以创建含有多个性能计数器的报表。

clip_image033




















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1580156 ,如需转载请自行联系原作者








相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
SQL 存储 关系型数据库
如何巧用索引优化SQL语句性能?
本文从索引角度探讨了如何优化MySQL中的SQL语句性能。首先介绍了如何通过查看执行时间和执行计划定位慢SQL,并详细解析了EXPLAIN命令的各个字段含义。接着讲解了索引优化的关键点,包括聚簇索引、索引覆盖、联合索引及最左前缀原则等。最后,通过具体示例展示了索引如何提升查询速度,并提供了三层B+树的存储容量计算方法。通过这些技巧,可以帮助开发者有效提升数据库查询效率。
112 2
|
18天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
64 10
|
19天前
|
SQL 关系型数据库 MySQL
惊呆:where 1=1 可能严重影响性能,差了10多倍,快去排查你的 sql
老架构师尼恩在读者交流群中分享了关于MySQL中“where 1=1”条件的性能影响及其解决方案。该条件在动态SQL中常用,但可能在无真实条件时导致全表扫描,严重影响性能。尼恩建议通过其他条件或SQL子句命中索引,或使用MyBatis的`<where>`标签来避免性能问题。他还提供了详细的执行计划分析和优化建议,帮助大家在面试中展示深厚的技术功底,赢得面试官的青睐。更多内容可参考《尼恩Java面试宝典PDF》。
|
1月前
|
SQL 监控 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
1月前
|
SQL 关系型数据库 BI
使用 Webshell 访问 SQL Server 主机并利用 SSRS
使用 Webshell 访问 SQL Server 主机并利用 SSRS
|
1月前
|
SQL 关系型数据库 PostgreSQL
遇到SQL 子查询性能很差?其实可以这样优化
遇到SQL 子查询性能很差?其实可以这样优化
88 2
|
1月前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
53 1
|
29天前
|
SQL 数据库 开发者
8种SQL编写陷阱:性能杀手还是团队乐趣?
【10月更文挑战第17天】记住,一个好的开发者不仅要知道如何编写代码,还要知道如何编写高效的代码。
35 0
|
1月前
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
1月前
|
SQL 数据处理 数据库
警惕!这八个 SQL 习惯正在拖垮数据库性能
【10月更文挑战第3天】在日常的数据库开发与维护工作中,编写高效、清晰的SQL语句是每位数据工程师的必修课。然而,不当的SQL编写习惯不仅能降低查询效率,还可能给同事的工作带来不必要的困扰。今天,我们就来揭秘八种常见的“专坑同事”SQL写法,助你避免成为那个无意间拖慢整个团队步伐的人。
35 0