P6Spy

P6SpyP6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。 一、P6Spy的安装与使用1、从http://www.p6spy.com/下载P6Spy的文件包,也可以下载它的源文件包来研究;2、把P6Spy的jar包p6spy.jar放到classp

 P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。

 

一、P6Spy的安装与使用
1、从 http://www.p6spy.com/ 下载P6Spy的文件包,也可以下载它的源文件包来研究;
2、把P6Spy的jar包p6spy.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下[tomcat的common/lib下也可],如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、运行你的应用程序或Web应用程序,可以在spy.log里看到监测到的sql详细记录信息了。
7、驱动程序加载先后的问题解决
  如果spy.log里出现
  你的程序的数据库驱动名称 is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting ‘deregisterdrivers’ to true in spy.properties
  请把spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true,重新运行即可。

 

二、结合SQL Profiler进行图形化监控与使用
1、从 http://www.jahia.net/ 下载SQL Profiler的文件包进行安装;
2、把p6spy.jar及sqlprofiler.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下[tomcat的common/lib下也可],如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录。注:此包中的spy.properties与P6Spy.jar的是不一致的。
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、注意要先运行 java -jar sqlprofiler.jar 来启动SQL Profiler,并成功看到启动后界面;
7、然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
8、这样可以在SQL Profiler图形化的界面上看到结果并进行分析了。
并且可以通过保存按钮导出数据库优化建议的索引脚本。



**另一篇:

SHOW_SQL获得HIBERNATE生成的SQL中,update/insert语句中的value被替换成“?”,下面方法利用p6spy获得对驱动的封装来拦截获得所执行的SQL语句,开发环境:tomcat 4.1.24 + oracle 9i 。
注:p6spy.jar及spy.properties可以从www.p6spy.com下载 
1、将p6spy.jar、commons-logging.jar、log4j-1.2.8.jar拷贝到WEB-INF\lib下 
2、将spy.properties拷贝到WEB-INF\classes下 
3、修改JDBC连接,在HIBERNATE与JDBC驱动之间插入p6spy,方便获得SQL语句 
  1)由oracle.jdbc.driver.OracleDriver为com.p6spy.engine.spy.P6SpyDriver 
   2)修改spy.properties样本的第41行,使用ORACLE驱动,封闭缺省的MYSQL驱动: 
   # oracle driver 
     realdriver=oracle.jdbc.driver.OracleDriver 
   3)修改spy.properties样本的第54行,封闭缺省的MYSQL驱动: 
    # the mysql open source driver 
    # realdriver=org.gjt.mm.mysql.Driver 
   4)修改spy.properties样本的第168行,将spy.log放到比较好找的位置: 
     logfile     = E:/spy.log 
   重新启动tomcat,E:/SPY.LOG可以看到hibernate生成的带值的SQL。

 

——————————————————————


 目前测试的数据不是很多,还无法找出那些效率比较低(或者执行时间比较长)的sql。

   /usr/local/tomcat_8082/logs/sql.log是我们项目执行sql的输出log,大家可以跟踪一下。工具见附件,在dos下运行java -jar irontracksql.jar ,弹出窗口,Import qstory_sql.log即可。  

    目前正在跟踪中。

今天的文章P6Spy分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/6345.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注