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。
分享到:
相关推荐
P6Spy是一个开源的JDBC代理库,它允许我们监控并记录应用通过JDBC执行的所有数据库操作,包括那些由Hibernate生成的SQL语句。它不仅可以提供完整的SQL语句,还能够提供执行时间、性能指标等详细信息,这对于优化...
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
将P6Spy与Hibernate结合使用,可以揭示由Hibernate生成并执行的实际SQL语句,包括参数,这对于理解和优化Hibernate的行为至关重要。 1. **配置P6Spy**:首先,需要在项目的类路径下添加P6Spy的jar文件,并在数据库...
这篇博客“使用p6spy完整显示hibernate的SQL语句”可能详细解释了如何配置和使用p6spy来跟踪Hibernate生成并执行的SQL。 首先,`p6spy`是一个Java数据库代理库,它可以拦截并记录所有通过JDBC发送到数据库的SQL语句...
p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用
对于开发者而言,P6Spy 是一个强大的调试和性能分析工具,尤其在使用MyBatis或Hibernate等ORM框架时,能够帮助我们更好地理解和优化数据库操作。 **P6Spy 的主要功能** 1. **SQL日志记录**:P6Spy 可以捕获并记录...
- **问题排查**:当应用程序遇到数据库相关问题时,P6Spy可以帮助快速定位问题,查看实际执行的SQL语句。 - **性能调优**:通过记录和分析SQL执行时间,可以找出性能低下或资源消耗大的SQL语句。 - **开发测试**...
内含p6spy-3.6.0.zip,p6spy最新Hibernate和Mybatis拦截并格式化sql配置.txt两个文件,用于调试监控项目运行状态,亲测可用,测试整理出来花了我很长时间的,好用不可多得!
这个工具对于开发者来说非常有用,因为它可以帮助定位性能瓶颈,特别是在使用 ORM(对象关系映射)框架如 Hibernate、JPA 等时,这些框架通常会生成复杂的 SQL 语句,而直接查看源代码并不容易获取这些语句。...
专门用来监控hibernate的sql输出,进行调试应用程序的工具,找了好久才找到,里面有个配置文件,记住realdriver是你的驱动,而在hibernate设置的驱动是这个驱动代理,p6spy的驱动,相当于在hibernate和数据库之间放...
- **概述**:文档提到p6spy可以用于拦截Hibernate通过JDBC执行的SQL语句。Hibernate是一个流行的ORM框架,用于简化Java应用中的数据访问操作。 - **具体步骤**: 1. **替换数据库驱动**:正如前文所述,首先需要将...
P6Spy可以帮助我们监控这些操作,记录执行的SQL语句,包括它们的执行时间、返回结果等信息。这有助于识别可能引起性能瓶颈的慢查询,或者发现可能导致错误或异常的数据输入。 配置P6Spy通常涉及以下几个步骤: 1. ...
# oracle driver # realdriver=oracle.jdbc.driver.OracleDriver # mysql Connector/J driver ... # informix driver ... # ibm db2 driver ...# the mysql open source driver realdriver=org.gjt.mm.mysql.Driver ...
p6spy支持jpa(如hibernate、ibatis/mybatis)打印完整sql。 此为本人在p6spy源码基础上进行修改,使其能在sql日志中过滤resultset,是sql更简洁,开发更方便。
【p6spy简介】 p6spy是一个开源的Java库,设计用于监视和分析应用程序中执行的SQL语句。...后续篇章将更深入地探讨p6spy的定制以及与其他性能监控工具的配合使用,帮助开发者更有效地管理和优化SQL执行。
在企业做项目时如果用了hibernate会有个头疼问题,就是如何让输出sql方便查看,因为出了问题时,要去查错时sql日志会给我们很大帮助,但hibernate通过配p6spy输出很乱,且只能输了到spy.log中,很不好查看,这里是我...
与hibernate配合使用实现sql语句参数的打印及其他的一些性能方面的监控,有利于优化sql代码,用法上网随便一搜很多的
一旦安装并配置完成,IronTrack SQL能够实时通过TCP/IP查看交互数据,或者通过查看p6spy生成的spylog文件来分析历史数据。如果应用运行在需要不间断运行的环境中,可以利用图形界面通过TCP/IP查看数据,或者在需要时...
4. 分析P6Spy生成的日志文件,查看和分析SQL执行情况。 通过这样的监控,我们可以获取到执行时间、次数、参数等信息,有助于找出慢查询,定位性能瓶颈,还可以发现潜在的SQL错误。同时,对于复杂的应用场景,例如...