P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架.
通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。
弄hibernate时,想显示sql语句,可以设置show_sql为true来达到这个目的,但是参数值全PreparedStatement一样,用?来代替的。
用p6spy可以达到显示的那些参数原值的目的,但可读性差。可以利用SQL Profiler来处理这个事情。
p6spy: http://www.p6spy.com/
一、P6Spy的安装与使用
1、下载P6Spy的文件包,也可以下载它的源文件包来研究。
2、将p6spy.jar放到WEB-INF/lib目录下,将spy.properties放到WEB-INF/classes目录下。
3、修改 原有 JDBC Driver为:com.p6spy.engine.spy.P6SpyDriver其它的都不用更改。
4、修改 spy.properties 中的 realdriver 值为 原有 的JDBC Driver,比如我的是:com.mysql.jdbc.Driver
5、运行你的应用程序或Web应用程序,可以在spy.log里看到监测到的sql详细记录信息了。
6、驱动程序加载先后的问题解决
如果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,重新运行即可。
我的日志记录产生在 %TOMCAT_HOME%\bin下,此log位置可以能过修改 logfile = x:\x_dir\spy.log 来控制
打开看看,看里面的日志是不是看起来比较不爽?下面我们安装SQL Profiler来让自已的视线爽一点。
SQL Profile: http://www.jahia.net/jahia/page597.html
二、结合SQL Profiler进行图形化监控与使用
1、下载SQL Profiler的文件包进行安装。
2、把p6spy.jar及sqlprofiler.jar放到WEB-INF/lib目录下,将SQL Profiler自带的spy.properties覆盖原来的classes目录下文件
3、修改 原有 JDBC Driver为:com.p6spy.engine.spy.P6SpyDriver其它的都不用更改。
4、修改 spy.properties 中的 realdriver 值为 原有 的JDBC Driver,比如我的是:com.mysql.jdbc.Driver
5、注意要先运行 java -jar sqlprofiler.jar 来启动SQL Profiler,并成功看到启动后界面;
6、然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
7、这样可以在SQL Profiler图形化的界面上看到结果并进行分析了。
并且可以通过保存按钮导出数据库优化建议的索引脚本。
IronTrack SQL: http://www.irongrid.com/ironeyesql
三、结合IronTrack SQL进行图形化监控与使用
1、下载IronTrack SQL的文件包进行安装.
2、把irontracksql.jar、p6spy.jar、log4j-1.2.8.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下.
3、把spy.properties放到classes目录下,如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录.
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改.
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称.
6、设置监听端口号monitorport=2000
6、先运行 java -jar irontracksql.jar 来启动IronTrack SQL.
7、再启动你的应用程序或服务器;
8、可以在 IronTrack SQL 图形化的界面上看到结果并进行分析了。
网上好多帖子都是说,修改原有 JDBC Driver为:com.p6spy.engine.spy.P6SpyDriver
然后修改spy.properties 中的 realdriver值为原有的JDBC Driver
如果在spring开发环境中使用org.springframework.jdbc.datasource.DriverManagerDataSource来模拟dataSource是不会生效的,
代码
<script></script>
Code
1 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
2 <property name="driverClassName">
3 <value>com.sybase.jdbc2.jdbc.SybDriver</value>
4 </property>
5 <property name="url">
6 <value>jdbc:sybase:Tds:192.168.0.2:6100/db</value>
7 </property>
8 <property name="username">
9 <value>usr</value>
10 </property>
11 <property name="password">
12 <value>pwd</value>
13 </property>
14 </bean>
15
16
因为在spring加载时我们无法控制先加载哪个,spring会报错不能使用com.p6spy.engine.spy.P6SpyDriver连接到数据库,
其实p6spy只是想做jdbc的代理,而不是真正想连数据库,而spring却不知道这些,所以应该采用另外一种方式来集成p6spy
代码
Code
1 <bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
2 <property name="driverClassName">
3 <value>com.sybase.jdbc2.jdbc.SybDriver</value>
4 </property>
5 <property name="url">
6 <value>jdbc:sybase:Tds:192.168.0.2:6100/db</value>
7 </property>
8 <property name="username">
9 <value>usr</value>
10 </property>
11 <property name="password">
12 <value>pwd</value>
13 </property>
14 </bean>
15 <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource" destroy-method="close">
16 <constructor-arg>
17 <ref local="dataSourceTarget"/>
18 </constructor-arg>
19 </bean>
<script></script>
这样就可以把p6spy集成到spring中去了。
令:网上好多文章都介绍使用sqlprofiler和p6spy配合,但是IronTrackSQL感觉更好一些!
关于如何使用sqlprofiler,IronTrackSQL,配置很简单
对于sqlprofiler只要把sqlprofiler自带的spy.properties放到classpath下就可以了,然后java -jar sqlprofiler.jar
对于IronTrackSQL,还要把irontracksql.jar也放到classpath下,然后java -jar irontracksql.jar
注意:tomcat不能安装在Program Files文件夹下。如果tomcat安装在Program Files文件夹将无法监控sql和生成sql日志。
分享到:
相关推荐
p6spy-sql监控 p6spy-sql监控 p6spy-sql监控
p6spy.jar 博文链接:https://lxy19791111.iteye.com/blog/131293
通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。P6Spy 用 Log4J 来记录 JDBC 调用的日记信息。 自从 2003 年 11 月 30 日 P6Spy 版本 1.3 ...
NULL 博文链接:https://zhupan.iteye.com/blog/26414
内含p6spy-3.6.0.zip,p6spy最新Hibernate和Mybatis拦截并格式化sql配置.txt两个文件,用于调试监控项目运行状态,亲测可用,测试整理出来花了我很长时间的,好用不可多得!
借鉴p6spy开源框架部分源码,实现自己的SQL执行控制器。详情请查看相关博文:https://blog.csdn.net/qq_31142553/article/details/84405154
专门用来监控hibernate的sql输出,进行调试应用程序的工具,找了好久才找到,里面有个配置文件,记住realdriver是你的驱动,而在hibernate设置的驱动是这个驱动代理,p6spy的驱动,相当于在hibernate和数据库之间放...
# 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 ...
NULL 博文链接:https://cometzb-xujun.iteye.com/blog/1961262
p6spy 是对 mybatis、hibernate 的 SQl 监控,提高在开发过过程中效率。 本人直男癌一枚,希望我提供的 p6spy 的配置和使用对亲们有帮助,谢谢!
监控和剖析数据库 P6Spy、SQL Profiler、IronTrack SQL。三个东东打包放送,另附配置说明
用p6spy+sqlprofiler 监控sql 的所有文件和包
NULL 博文链接:https://duqiangcise.iteye.com/blog/1869905
利用p6spy+IronTrackSQL监控SQL所需的所有包和文件
与hibernate配合使用实现sql语句参数的打印及其他的一些性能方面的监控,有利于优化sql代码,用法上网随便一搜很多的