用p6spy和sqlprofiler来分析jdbc sql日志
1.简介

p6spy是针对数据库访问的动态监测框架,经长时间的发展已经非常成熟,p6spy模拟了一个标准的JDBC Driver,代理了真正的底层JDBC驱动。也就是说,我们只要把系统中所用的jdbc驱动配置成p6spy 驱动,把p6spy配置中的realdriver配置为我们实际使用的JDBC Driver,就可以使用他的性能监测功能了。

Sqlprofiler是p6spy的周边资源,p6spy用日志文件记录,看起来比较麻烦,Sqlprofiler为我们提供了一个图形化的监控界面,可以实时监控SQL执行过程,对执行结果进行统计并加以优化。

2.下载

p6spy
http://heanet.dl.sourceforge.net/sourceforge/p6spy/p6spy-install.zip

sqlprofiler
http://heanet.dl.sourceforge.net/sourceforge/sqlprofiler/sqlprofiler-0.3-bin.zip

3.配置p6spy

解压p6spy-install.zip,把p6spy.jar拷贝到我们项目里的lib下,spy.properties放到源码的根目录下就可以了

修改spy.properties
realdriver=org.gjt.mm.mysql.Driver #实际使用的数据库驱动程序的名字
appender=com.p6spy.engine.logging.appender.StdoutLogger

在设置数据源或者配置数据库连接的地方,
修改driver为:com.p6spy.engine.spy.P6SpyDriver
如修改hibernate.cfg.xml:
<property name="hibernate.connection.driver_class">
<!--   com.mysql.jdbc.Driver-->
     com.p6spy.engine.spy.P6SpyDriver
</property>

p6spy的基本配置已经完成,我们要做的只是简单切换JDBC 驱动,位于应用和jdbc之间的p6spy可以截获所有的jdbc操作,就可以很容易的实现SQL执行效率的判定及执行结果的分析统计,如sql的执行时间、次数、频度等。

运行一个数据库操作后就可以看到p6spy的日志,发现他是不是很容易看的,下面的Sqlprofiler就解决了这个问题。
4.配置Sqlprofiler

解压sqlprofiler-0.3-bin.zip,把spy.properties拷贝到项目中,覆盖之前的spy.properties,要改的也只是realdriver,可以看到配置文件中有log4j,这就需要我们吧log4j的jar拷贝到应用中。

sqlprofiler.jar并不需要拷贝到应用中,他需要我们来执行:
java -Xmx256m -jar sqlprofiler.jar

spy.properties片断:
log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender
log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost
log4j.appender.SQLPROFILER_CLIENT.Port=4445
log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true

p6spy 通过SocketAppender 向sqlprofiler发送日志信息,sqlprofiler启动后就开始监听本机的4445端口,在应用中执行数据库操作后就可以在sqlprofiler的界面中看到sql语句的执行结果。
irini   2007-01-08 14:04:56 评论:2   阅读:566   引用:0
回复游客问题 @2007-02-10 09:02:34  irini
我想你应该先看一下下面两个问题:
1. 在p6spy 和 sqlprofiler 都不配置的情况下sql操作是否正常

2. 只配置p6spy,sql操作后p6spy的日志正常记录了吗?

如果上两个问题都是正常的,那就只是sqlprofiler 的配置问题了,看一下上面的配置或找其他文章仔细看一下应该就可以了,如果还有问题可以把问题详细记录下来,贴在这里,或给我发邮件duysh@163.com
@2007-01-31 11:52:42  游客
配置好了,而且sqlprofiler也显示连接到p6spy了,但执行程序操作时就是看不到对应的执行的sql语句!??是怎么回事情呢!?

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2006 powered by YuLog