P6Spy + SQL Profiler + IronTrackSQL【修改】

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.P6Spy Driver其它的都不用更改.
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称.
6、设置监听端口号monitorport=2000
6、先运行 java -jar irontracksql.jar 来启动IronTrack SQL.
7、再启动你的应用程序或服务器;
8、可以在 IronTrack SQL 图形化的界面上看到结果并进行分析了。

网上好多帖子都是说,修改原有 JDBC Driver为:com.p6spy .engine.spy.P6Spy Driver
然后修改spy.properties 中的 realdriver值为原有的JDBC Driver
如果在spring开发环境中使用org.springframework.jdbc.datasource.DriverManagerDataSource来模拟dataSource是不会生效的,

代码

<script>render_code();</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.P6Spy Driver连接到数据库,
其实p6spy 只是想做jdbc的代理,而不是真正想连数据库,而spring却不知道这些,所以应该采用另外一种方式来集成p6spy

代码

<!----> 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>render_code();</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

你可能感兴趣的:(spring,sql,bean,jdbc,Sybase)