我的SQL在哪里--SQL跟踪工具P6Spy介绍(s00n原作)

原创 2006年06月21日 15:04:00
我的SQL在哪里(s00n原作)
-SQL跟踪工具P6Spy介绍
 
 
一、      P6Spy介绍
1.       简介
P6spy是一个开源项目,可以用来拦截JDBC调用,记录JDBC调用的日志信息,并可以根据调用时间长短的时间设置来记录日志,P6Spy包括两个组件P6Log,P6Outage
2.        版本
P6Spy version 1.3 (www.p6spy.com)
3.    P6Log组件
按需记录JDBC日志
4.       P6Outage组件
可以检测到记录运行时间较长的JDBC statement.,这些可能会影响到数据库的运行效率,并可将这些调用产生日志。
# outagedetection=true|false    (是否记录较长时间运行的statement)
# outagedetectioninterval=时间 (以秒记)
 
二、      工具的使用范围,目的,优点
5.       范围
开发环境
6.       目的
*         在确定应用程序性能的时候,更多地会关注其中SQL语句的执行情况及执行时间
*          调试程序的时候,想知道传入SQL的参数数值
*          修改程序的时候,并不想过多的关注其他人所写的程序细节,只要知道执行的SQL语句
*          比较关心程序的连接池中连接使用情况
7.       优点
*         不用去写很多传SQL参数值的语句
Log.debug(XXX.class, "referenceNo:" + entity.getReferenceNo());
*         不用去写调试sql的语句
Log.debug(XXX.class, "sql:" + sql);
*         页面执行某个操作,不用修改任何程序,即可知道程序做了哪些数据库操作
*         可以查看每个SQL的执行效率情况,给SQL调优做一定的参考
*         可以查看LOG文件,参考某个JDBC Transction的执行情况
*         可以通过配置过滤出你关心的SQL,以及过滤掉你不关心的SQL
8.       缺点
参考 对环境的影响
 
 
三、      修改工具源代码文件(为便LOG文件不过大,减少一些不必要的LOG)
9.       P6ResultSet.java   
         注释//P6LogQuery.log("resultset", query, buffer.toString());
         程序每次的resultSet.next()信息都会记录到LOG表,而且不能通过过滤器来过滤,为减少LOG表的大小,这里注释。
10. FormattedLogger.java
         加入如下语句
        sql=sql.length()>1000?sql.substring(0,1000)+"......":sql;
   prepared=sql.trim().length()>0?"":prepared;
         //对于有些SQL的参数有clob字段,这样LOG文件会非常的大.所以做截取.
        //另外当sql有值时,我们过滤掉prepared的字符,以减少LOG文件的大小
 
四、      在GSBL开发环境安装
11. 配置文件spy.properties
*         加入此行realdriver=oracle.jdbc.OracleDriver
*         修改
filter=true       //是否过滤需要或不需要记录的信息
include =
exclude=
*         append=false    //每次重新生成LOG文件
*         dateformat=yyyyMMdd:HHmmss:SSS    //设置日期格式
*         logfile     = spy.log   //设置LOG文件名 
*         excludecategories=info,debug,result,batch,resultset //不用记录日志的categories
 
12. 上传p6spy.jar
放在/weblogic81/server/ext/下
13. 上传spy.properties
放在/weblogic81/server/ext/下
14. startWeblogic.sh
修改bea/weblogic700/server/bin/startWeblogic脚本,
:${WL_HOME}/server/ext/p6spy.jar:${WL_HOME}/server/ext
15. 数据库连接Driver Classname
在weblogic console的Services/JDBC/Connection Pools下把所有的Connection Pool的
Driver Classname改成com.p6spy.engine.spy.P6SpyDriver
 
五、      对环境的影响
从上面安装来看,P6Spy只做了一层Driver的拦截器,与程序无耦合性,除了Driver改成了P6Spy的,程序其他地方并没有任何的改变,这层拦截器除了可能有略微的性能下将,对程序其他方面没有任何的影响。而这点性能下降,在开发环境开发人员无法感觉到,相比所带来的好处,可以忽略。
 
六、      LOG文件
16. 位置
         /user_projects/domains/mydomain/spy.log
17.文件生成规则
         append=false    //每次重起服务器重新生成LOG文件
 
七、      LOG文件内容格式
current time|execution time|connectionId|category|statement SQL String|effective SQL string
 
18. category
 可以通过# filter what is logged
         filter=true   
         include     =
         exclude     =
         这三项的category设置来过滤(不)需要记录或信息
         error –P6Spy的出错信息
         info –包括启动及其他信息
         debug -调试信息,记录的信息非常多
         statement –包括 Statements, PreparedStatements, and CallableStatements.
         batch –包括 addBatch() JDBC API.
         commit -包括commit() JDBC API.
         rollback -包括rollback() JDBC API.
         result -包括由ResultSet生成的语句
19. statement SQL String
      传给statement的sql语句
20. effective SQL string
如果是程序使用的是prepared statement,可以查到带有实际运行时参数值的SQL语句。
21. connectionId
         连接ID
22. current time
         dateformat=yyyyMMdd:HHmmss:SSS
23. execution time
执行时间,以ms记
24. 举例
20060616 16:19:50:326|2|1|statement|select * from T_QUOTE_INFO  where 1=1    and POLICY_ID = 1446981
 
八、      查看LOG文件
Telnet客户端连接上服务器以后
tail -f spy.log
 
九、      怎样在LOG文件中找到自己的SQL
*         通过配置文件设置过滤器
*         重启WEBLOGIC
*         删除日志文件spy.log
*         TELNET终端
*         传入特殊的数值,然后再文件中查找此数值
        
十、      参考工具官方网站
http://www.p6spy.com
2006-06-21[s00n]
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

为你的 项目安装Sql跟踪工具-P6Spy

我们在项目中有时候需要跟踪记录sql的执行情况,有时候跟踪的日志中的sql是预编译之后的,参数是带问号的,所以我们需要跟踪到真正的sql执行语句,P6spy正好可以满足我们的需要。先来看一下P6Spy...
  • zknxx
  • zknxx
  • 2017-04-04 16:20
  • 509

p6spy精简版-跟踪sql工具

  • 2008-03-23 18:52
  • 94KB
  • 下载

p6spy监测SQL工具配置

1.maven pom.xml 配置 p6spy p6spy 1.3 2.放置spy.propotities文件 放在maven项目下的 放...

SQL性能监控工具 P6Spy、SQL Profiler、IronStack SQL简介

在优化Hibernate性能的时候,很重要的一点就是要看到Hibernate底层

使用p6spy打印hibernate或者PreparedStatement的带参数值的sql语句

不管在何种环境下用过hibernate的人都知道,哪怕用了show_sql打印出来的sql也是由占位符号的,占位符号的参数值是没有显示出来的,这个开发调试过程中很不方便。同样就算是原生的Prepare...

采用p6spy输出带参数的sql语句

使用Hibernate提供的内置属性true只能输出

用 p6spy 来观察 Java 程序中执行的所有 SQL 语句(三. 定制输出)

既然提到 p6spy 的输出,那就有必要说明一下 p6spy 输出日志的格式了 03-16-09 15:12:06:656|16|4|statement|SELECT * FROM OM_CUS...

使用p6spy 2监控及打印Spring 4 JdbcTemplate生成的SQL语句

有时在调试代码的时候需要跟数据库打交道,这时如果知道数据库执行的是什么样的语句,好多问题就迎刃而解了,而p6spy正是这样的一个数据库监控工具。在Spring应用中使用p6spy时,需要在项目中添加一...

P6SPY、SQL Profiler结合使用

弄hibernate时,想显示sql语句,可以设置show_sql为true来达到这个目的,但是参数值全是像PreparedStatement一样,用?来代替的。  用p6spy可以达到显示的那些参...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)