用jamon来监控你的sql执行效率

简介:
/**

*作者:张荣华

*日期:2008-2-25

**/

之前有一篇文章讲到如何使用jamon来监控请求以及方法得调用(原文地址见:[url]http://www.iteye.com/post/354575 [/url]),本文属于其姊妹篇,使用jamon监控系统的sql调用及其调用效率。

需求:
1我们知道在使用hibernate得时候,我们可以打开show sql选项,可以直接查看sql语句调用的情况,那么当我们使用其他持久技术的时候我们也需要这个功能怎么办呢,没有关系,jamon能够帮我们做到。

2 很多时候,不同的程序员会写出不同的性能的sql,有时候可能会不小心或者因为不知道而写出性能很差的sql,我自己曾经就发生过这种事情,在500w条数据的表里使用了一个limit来分页,到后面,执行一条sql都需要几分钟,诸如此类的时候可能大家都有碰到过,如果能有监控sql性能的工具嵌在应用里该多好,当然有jamon就可以帮我们做到。

对于jamon来说,每一个query的执行之后的统计结果都会被保存下来,这些概要统计都以MonProxy-SQL开头。这些统计中包括查询执行的时间,有比如平均时间,执行总时间,最小执行时间,最大执行时间,这些东西难道不是我们正想要的吗。

那么让我们开始吧,我们知道,这些query执行的统计应该是在connection中被统计的,也就是说我们要代理一般的connection,而connection又是由datasource产生的,所以我们可以代理datasource,说干就干。

一个datasource接口中关于connection的方法只有两个:
也就是说我们只要override这两个方法即可。
根据这个思路我写了以下代码:
显然这个一个代理模式。接下来就是生成这个代理类,我是在spring中注册了这么一个类:

writeMonitorDataSource 所依赖的writeDataSource就是我们真正配置的datasource,比如:
好了,那么在使用datasource的时候,我们应该用哪个呢,当然是writeMonitorDataSource这个里,我们可以把它注入给jdbcTemplate,或者sessionfactory,或者其他需要用到datasource的地方。

到这里,就一切准备完毕了,我们可以看看我们sql语句的执行效率了(这个页面的地址为sql.jsp):
见图1
当然要我们的应用能够显示这个页面,我们需要把jamon的一组页面拷到我们的应用中,这一组页面包含在我提供下载的包中,最新的jamon版本是2.7。

我们可以看到id为153的那条sql语句执行了78ms,我要去看看这条sql语句是不是有点什么问题或者是否有优化的可能性。

当然,刚才说到每一条sql语句都是有统计平均时间,最大最小执行时间等等,没错,在另外一个页面jamonadmin.jsp上就包含这些内容
见图2


上面的图片代表hits表示执行次数,avg表示sql执行的平均时间,后面的min和max表示sql执行的最小耗时和最大耗时。从这里我们能够更直观的看到我们每条sql语句执行的情况。很有用的一个功能。

而且在上面那两个页面上,我们还可以选择把sql执行的结果导出来,可以导成xml或excel格式。

总结:使用jamon来监控我们的sql语句我觉得很有使用意义,而且使用jamon对我们的应用来说完全是松耦合的,根本不需要更改我们的业务逻辑代码,完全是可插拔的,我们也可以开发时使用jamon,部署时拔掉jamon。有了它能够使一些程序员能够更多一点的关注自己所写的sql的效率,当然如果之前开发的时候没有使用jamon也没有关系,即使上线后也可以查看一下sql语句是否有问题,比如哪些sql语句执行得比较频繁,是否存在给其做缓存得可能性等等。总之使用jamon在应用程序中来监控我们得sql语句具有很强得实用意义,

再次总结:jamon,很好,很强大。
目录
相关文章
|
1天前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
10 2
|
5月前
|
SQL 监控 关系型数据库
实际应用中监控和诊断SQL语句执行情况的具体案例
实际应用中监控和诊断SQL语句执行情况的具体案例
|
5月前
|
SQL 监控 安全
sql server数据库监控
SQL Server数据库监控是收集、聚合和监控SQL服务器的各种指标的过程,旨在维护SQL数据库的运行状况和可用性,优化性能,并预防或快速响应错误。以下是一些关于SQL Server数据库监控的核心
|
3月前
|
SQL 监控 Java
SQL质量监控
为帮助用户管理和优化SLS中的SQL查询,提供了用户级SQL质量监控功能,集成于CloudLens for SLS。开启服务后约10分钟,用户可在「报表中心 / SQL质量监控」中查看数据。 该功能包括: SQL健康分和使用报告:反馈总体质量。 服务指标:如请求PV数、平均延时等,用于业务分析。 运行指标:如并发请求、处理数据量等。 SQL Pattern分析:提炼SQL语义特征,识别业务特征。 质量优化建议:基于请求成功率和错误码分布给出改进建议。 监控功能以分钟为单位聚合分析数据,不包括JDBC接入和ScheduledSQL流量,并可能随产品发展而调整。这些功能有助于用户全面掌握SQL
SQL质量监控
WXM
|
4月前
|
SQL 运维 分布式计算
如何做好SQL质量监控
为满足用户对SQL分析行为的监控和质量管理需求,我们推出了用户级SQL质量监控功能。此功能集成于CloudLens for SLS中,可轻松开启以监控和管理所有SLS相关资源(包括采集接入、读写操作、作业、配额、SQL、计费等)。
WXM
30 2
如何做好SQL质量监控
|
4月前
|
存储 监控 数据库
局域网监控软件中的Transact-SQL事务管理
**T-SQL事务管理**确保数据的原子性、一致性、隔离性和持久性。使用`BEGIN TRANSACTION`, `COMMIT`和`ROLLBACK`来控制事务。例如,在更新账户余额的事务中,如果所有操作成功则提交,否则回滚。错误处理通过`TRY-CATCH`结构实现,嵌套事务允许在事务内开启新的事务。通过触发器和存储过程,如`DataChangeTrigger`和`SubmitDataToWebsite`,可以自动化数据提交到网站,当表数据变动时触发。
40 5
|
5月前
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
|
4月前
|
SQL 索引
性能优化思路及常用工具及手段问题之索引不合理导致的SQL执行效率低问题如何解决
性能优化思路及常用工具及手段问题之索引不合理导致的SQL执行效率低问题如何解决
|
5月前
|
SQL 监控 数据库管理
在实际应用中监控和诊断SQL语句的执行情况
在实际应用中监控和诊断SQL语句的执行情况
|
5月前
|
SQL 缓存 监控
sql server数据库监控
SQL Server数据库监控是收集、聚合和观察SQL服务器的各项指标的过程,旨在维护SQL数据库的运行状况和可用性。由于SQL数据库服务器的问题经常被识别为导致延迟等问题的原因,因此,对其进行监控显