`
ry.china
  • 浏览: 139830 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

用p6spy来观察Java程序中执行的所有SQL语句

    博客分类:
  • java
阅读更多

本想把 p6spy 结合 SQL Profiler 或 IronTrack SQL 的使用介绍掇凑于一块来写。简单点说,只是一贴上图样,篇幅便需拖拉难遂人愿,也好,索性把它们分成两个篇章。一来每篇主旨鲜明,二来五篇成一系列比起四更来的自然且吉利。
   前面讲过 p6spy 本身就可利用 Log4j 的 SocketAppender 向远端发送日志,SQL Profiler 不过是在这个基础上作了进一步拓展。而接下来要说的 IronTrack SQL 就略有不同了,看它带的 p6spy.properties 文件,里面有 IronTrack SQL 给 p6spy 定制的一个模块:module.ibeam=com.irongrid.ibeam.server.IBeamFactory。它用到了 log4j-1.2.8.jar,不过还得研究下 Log4j 在其中所起的作来。现在就来介绍 p6spy 结合 IrconTrack SQL 的使用,最好是你知道如何单独使用 p6spy。压缩包里有文档:是 IronTrackSQLdocsindex.html。
  p6spy + IronTrack SQL 观察 SQL 语句
   下载 IronTrack SQL:http://www.dlog.cn/uploads/files/IronTrackSQL.zip,网上很多文章说从 http://www.irongrid.com/ironeyesql 下载,而实际上这个域名不存在了。若是第一个地址无法下载。好再看使用步骤,解开 IronTrackSQL.zip,可以看到在第一级目录中有必须的 p6spy.ar、log4j-1.2.8.jar、irontracksql.jar、spy.properties、 irongrid.properies 文件。
  1. 把压缩包中的 irontracksql.jar 拷到 p6spy.jar 所在的目录中,比如 Tomcat 5.x 的 common/lib 目录中
  2. 压缩包中还有个 p6spy.properties 文件,我们就在这个文件基础上少作改动,把它放在加载 p6spy.jar 的加载器能见的位置上,如 Tomcat 5.x 的 common/classes 目录中。
   注意:如果你在 Tomcat 中,p6spy.jar 和 sqlprofiler.jar 是由 commons 加载器加载的,那么要用到的 log4j-1.2.8.jar 也必须放在与他们同一目录中由 cmmons 类加载器来加载,如果仍然在应用的 WEB-INF/lib目录中的话,log4j 的类对于 p6spy 和 sqlprofiler 来说不可见。如果你对于类加载器不熟的话,还是别把事情搞太复杂了,把那些 jar 文件全部放到应用的 WEB-INF/lib 中吧,但是配置连接池的时候又可能碰到新问题。
  3. 修改 p6spy.properties 文件,只启用你所用的 realdriver,如对于 oracle 是 realdrive=oraclejdbc.driver.OacleDriver。
  看到其中对模块 ibeam 的配置 monitorport=2000,我们就使用这个监听端口吧。
  4. 命令行下进到 IronTrackSQL 的解压目录,执行 java -jar irontracksql.jar 来启动IronTrack SQL,监听 p6spy 的 SQL 语句输出
  5. 启动应用,进行业务操作,就能在 IronTrack SQL 界面上直观的看到你需要的东西了。
  不多说了,看看界面吧,这个 IronTrackSQL 看起来比 SQL Profiler 要专业些。
  可设定监听端口,导出导入历史数据。
  irongrid.properties 文件中保存了 Iron TrackSQL 运行时的配置数据。与 SQL Profiler 相比,它有以下几个特点:
  1. 界面标志些,使用了 JFreeChart 来展示图表
  2. 既能实时监听,又能保存历史数据来对比分析
  3. 并不要求先启动 Iron TrackSQL,相比于 SQL Profiler 的被动监听,它采取的是主动去查询。更适于远程监控,想在何时监控就启动,完事就关闭,不至于像 SQL Profiler 那样一旦监听窗口坏了一下,就得重启应用。

 

 

 

 

 

 

一:P6SPY SQL PROFILER简介

弄JDBC,Hibernate,iBATIS时,想显示sql语句,可以设置show_sql为true来达到这个目的,但是参数值全是像PreparedStatement一样,用?来代替的。
用p6spy和SQL Profiler可以达到显示的那些参数原值的目的,可读性很强。然后可以直接把带有参数原值的sql语句拷贝到pl/sql或TOAD中跑一下,非常容易定位sql的错误在哪里。
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。
SQL Profiler 是一个由 Jahia.org 提供的基于 P6Spy 引擎的快速剖析工具,用来统计 SQL 查询语句以便了解哪里是性能瓶颈,在哪里创建索引或者采取相应的办法才能提高效率,并且能根据 SQL 查询语句的情况帮你生成合适的索引脚本。
这个小工具可以实时地显示数据库查询的情况,通过集成的 SQL 解析器,在访问大多数表与列上面建立统计分析,并生成索引脚本。当然,其它的信息也会进行收集和显示,比如:单个数据库请求的时间、一类请求的时间以及所 有请求的时间。因此,可以有效地通过视图的排序来检测数据的性能问题所在。这个工具对于大量的需要进行分析的请求是非常有用的,而不是人工一个个地去做分 析。当你需要知道比如对相同的表和列进行访问但是采用不同的查询值时,这种分组的查询可以用建立在 ANTLR 上的 SQL 解析器进行分析。

 

二:P6SPY与系统集成

首先,你的应用系统应当是基于数据库的,然后你需要去获取 P6Spy 相关的文件。下面介绍 P6Spy 的安装与使用的详细操作过程:
1. 下载 <http://www.p6spy.com/download.html > P6Spy 的文件包,也可以下载它的源文件包来研究;
2. 把 P6Spy 的 jar 包 p6spy.jar 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
3. 把 spy.properties 放到 lib目录下,如果是 Web 应用程序放在 YourWebApp/WEB-INF/ classes / 目录下,注意不是 lib / 目录下,同时tomcat/bin目录下放一份,否则将出现找不到数据库驱动异常
4. 修改你应用系统中的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的全部使用默认值,暂时先都不用修改;
5. 打开配置文件 spy.properties 文件,找到 realdriver,把它的值改为你的应用系统的真正的数据库驱动名称;
6. 运行你的应用程序或 Web 应用程序,可以在 spy.log(该文件的位置根据你的需要存放位置在spy.properties的logfile属性进行设置) 里看到 P6Spy 监测到的 SQL 详细的执行与操作的记录信息了,包含有完整的 SQL 执行参数。

 

三:P6SPY +SQL Profiler与系统集成

首先,你的应用系统同样也应当是基于数据库的,而且安装了P6SPY,然后你需要去获取 SQL Profiler 相关的文件。下面介绍 SQL Profiler 的安装与使用的详细操作过程:
1. 下载 <http://sourceforge.net/projects/sqlprofiler/ > SQL Profiler 的文件包进行安装;
2. 把 sqlprofiler.jar 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
3. 把 spy.properties覆盖之前的那个spy.properties文件,位置目录跟p6spy是一样的,修改你应用系统中的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的全部使用默认值,暂时不用修改;
4. 打开 spy.properties 文件,把 realdriver 的值改为你的程序的数据库驱动名称;
5. 注意要先运行 java -jar sqlprofiler.jar(在这个jar所在的目录下去运行) 来启动 SQL Profiler,并成功看到启动界面;
6. 然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
7. 这样就可以在 SQL Profiler 图形化的界面上看到结果并进行分析了。

 

 

个人使用sqlprofiler配置没报错,但是没有日志,搞不清楚是怎么回事

分享到:
评论

相关推荐

    用 p6spy 来观察 Java 程序中执行的所有 SQL 语句.docx

    p6spy 是一个开源的 Java 框架,它的主要功能是在不修改代码的情况下,监控和记录 Java 应用程序中执行的所有 SQL 语句。这个工具对于开发者来说非常有用,因为它可以帮助定位性能瓶颈,特别是在使用 ORM(对象关系...

    用p6spy来观察Java程序中执行的所有SQL语句[整理].pdf

    配置完成后,p6spy将会在应用程序启动时自动加载,开始记录并分析所有执行的SQL语句。 【总结】 p6spy是一个强大的工具,对于理解和优化Java应用程序中的数据库操作非常有帮助。通过简单配置,它可以提供详细的SQL...

    使用P6spy打印ibatis执行的SQL语句

    P6Spy是一款开源的Java工具,它允许开发者捕获和记录应用程序与数据库之间的交互,特别是SQL语句的执行。本文将详细探讨如何使用P6Spy来打印iBatis(现为MyBatis)执行的SQL语句,以便进行性能分析和调试。 首先,...

    P6SPY JDBC拦截打印sql语句 非常好的调试工具

    P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...

    采用p6spy完整显示hibernate的SQL语句

    8. 之后,P6Spy将在指定的日志文件(如`c:/spy.log`)中记录所有的数据库操作,包括完整的SQL语句和执行详情。 通过P6Spy,我们可以得到诸如SQL语句的原始格式、执行时间、异常信息等详细信息,这对于分析和优化...

    借鉴p6spy,实现自己的SQL执行监控器项目源代码

    P6Spy是一个广泛使用的开源框架,它允许开发者无侵入地监控和记录应用程序中的所有SQL语句。这个项目的目标是借鉴P6Spy的部分源码,创建一个自定义的SQL执行监控器,以满足特定的需求或提供更定制化的功能。 P6Spy...

    p6spy java 使用

    一旦启用 P6Spy,每次应用程序执行 SQL 语句时,P6Spy 都会记录这些 SQL 的详细信息,包括执行前后的原始 SQL、执行参数、返回结果以及执行时间等,这对于性能调优和问题排查非常有用。 【排除ResultSet】 P6Spy ...

    p6spy-sql监控

    1. **SQL日志记录**:P6Spy可以捕获并记录所有执行的SQL语句,包括原始的SQL、执行时间、返回结果等,这对于追踪数据库操作和性能分析非常有用。 2. **日志格式自定义**:P6Spy允许用户通过配置文件定制日志输出...

    使用p6spy完整显示hibernate的SQL语句

    这篇博客“使用p6spy完整显示hibernate的SQL语句”可能详细解释了如何配置和使用p6spy来跟踪Hibernate生成并执行的SQL。 首先,`p6spy`是一个Java数据库代理库,它可以拦截并记录所有通过JDBC发送到数据库的SQL语句...

    下载 p6spy.jar (内含使用步骤)

    1. **SQL日志记录**:P6Spy 可以捕获并记录应用程序执行的所有SQL语句,包括参数和执行时间,这对于调试和性能分析非常有用。 2. **格式化输出**:P6Spy 提供了自定义的日志格式,可以按照开发者的需求定制输出信息...

    p6spy.rar输出完整带参sql

    标题中提到的“输出完整SQL”,意味着P6Spy可以捕获并记录应用程序发出的所有SQL语句,包括参数。这对于调试和性能分析非常有用,特别是当SQL语句是动态生成或者使用了预编译的PreparedStatement时。 5. **兼容性*...

    P6spy 和 SqlProfiler 打印JDBC真实SQL

    总结来说,P6Spy和SqlProfiler是Java开发中不可或缺的数据库监控工具。它们能够帮助我们深入了解应用程序与数据库的交互,从而进行有效的性能优化和问题定位。在日常开发和维护过程中,正确使用这两个工具可以显著...

    p6spy精简版-跟踪sql工具

    首先,p6spy的核心功能是SQL日志记录,它能够捕获应用程序执行的所有SQL语句,并将其详细信息输出到日志文件中。这对于性能调优、故障排查以及审计都是非常有用的。在原版p6spy中,用户需要配置`spy.properties`文件...

    p6spy dataSource 配置 监听真实sql语句

    p6spy dataSource 配置 监听真实sql语句

    sqlprofiler+p6spy+配制

    通过使用SQL Profiler,你可以追踪SQL Server实例上的事件,如T-SQL语句的执行、锁争用、索引使用情况等。这有助于找出慢查询和不合适的索引,从而提高数据库性能。配置SQL Profiler通常涉及创建跟踪模板、选择要...

    p6spy简介显示hibernate配置

    1. **SQL日志记录**:P6Spy能够捕获并记录应用程序执行的所有SQL语句,包括参数值,这对于分析SQL性能和定位问题非常有价值。 2. **格式化输出**:P6Spy可以按照自定义的格式输出SQL日志,使其更易于阅读和分析。 ...

    weblogic server 11g +p6spy +sql profiler 配置

    6. **测试和分析**:启动或重启WebLogic Server,然后运行应用程序,观察`spy.log`(默认的日志文件)中记录的SQL执行详情。通过这些信息,你可以发现执行时间长的SQL语句,优化数据库查询,提升应用性能。 7. **...

    使用P6Spy和IronTrack SQL进行性能监控

    在实际应用中,我们可以先用P6Spy收集基础的SQL执行数据,然后通过IronTrack SQL进行深入分析,找出性能问题并采取相应的优化措施。例如,如果发现某个SQL查询执行时间过长,可以进一步查看它的执行计划,检查是否...

    Tomcat6.x + P6spy + SqlProfiler集成

    - 通过P6spy收集的日志信息,你可以将这些SQL语句导入到SqlProfiler中进行更深入的分析。 4. **测试与调试** - 启动Tomcat,运行应用程序,进行数据库操作。 - 检查P6spy的日志文件,查看SQL语句的执行情况。 -...

    p6spy使用说明.doc

    P6Spy的工作原理是通过代理模式,拦截SQL语句并记录其执行情况,这有助于开发者进行性能优化和问题排查。 一、P6Spy简介 P6Spy是一个SQL日志记录器,它能够捕获并记录应用程序中的所有数据操作,包括插入、更新、...

Global site tag (gtag.js) - Google Analytics