在公司使用ibaits做持久层存储。虽然ibatis是半自动的,可以编写sql,但是跟一大堆的xml放在一起看起来很不直观。之前虽然可以配置log4j可以打印执行的sql,但是输出的只是预编译的,其中充斥着?,传入的参数不能能直观的检查。在测试的时候往往想查看执行的sql到底是什么,这样对于定位错误非常有用。在网上找到两个工具包来解决这个问题:p6spy和sql_profiler。
访问链接如下:
P6spy: http://www.p6spy.com/
Sqlprofiler:http://www.jahia.org/jahia/page377.html(打不开,难道要CROSS WALL--shit,敏感词汇)
大致原理:sqlprofiler其主要作用就是对数据库进行拦截监控,P6Spy 就是一个代理它只做了一层对 JDBC 驱动的拦截,然后转发出去。它用log4j来记录操作日志。
下载p6spy-install.zip解压缩后的目录文件如下图:
使用方法:
目前p6spy的版本为1.3,在项目中增加依赖:
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>1.3</version>
</dependency>
目录中有一个spy.properties配置文件,将其放置到classpath下,该文件详细的配置了p6spy]的运行参数。前面提到p6spy的代理机制,所以我们需要使用它提供的驱动(其他的数据库连接URL什么的无需修改):
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
<property name="driverClassName">
<value>com.p6spy.engine.spy.P6SpyDriver</value>
</property>
<property name="url">XXX </property>
<property name="username">XXX </property>
<property name="password">XXX</property>
</bean>
在spy.properties文件中配置我们实际使用的数据库驱动:
# oracle driver
# realdriver=oracle.jdbc.driver.OracleDriver
# mysql Connector/J driver
# realdriver=com.mysql.jdbc.Driver
# informix driver
# realdriver=com.informix.jdbc.IfxDriver
# ibm db2 driver
# realdriver=COM.ibm.db2.jdbc.net.DB2Driver
# the mysql open source driver
#realdriver=org.gjt.mm.mysql.Driver
其中还有一个logfile属性可以配置日志文件输出的位置。
通过运行单元测试,的确在相应目录下生成了sql日志,但查看后发现该日志的可读性很差。所以使用sqlprofiler图形界面查看。
下载下来的sqlprofiler-0.3-bin的目录结构如图:
我们使用sqlprofiler的GUI控制介面,说白了就是一个监听器,在你通过p6spy进行数据库操作时,他就会很清晰地跟踪并列出你的操作,比单单查看那个恶心的spy.log来得舒服!既然基于p6syp当然也要用到p6syp.jar这个包咯,只是必须使用我们下载到的sqlprofiler.zip中的spy.properties来替换原来的项目中的那个文件,因为这个文件是定制过的,所谓的监听器也是靠这个文件才起作用的。同样的需要配置相关参数,修改realDriver和logfile的配置。
运行sqlprofiler.jar并执行测试,可以看到图形界面效果如下:
- 大小: 15.8 KB
- 大小: 6 KB
- 大小: 153.7 KB
分享到:
相关推荐
这就引入了两个强大的工具——P6Spy和SqlProfiler,它们专门用于打印和分析JDBC执行的真实SQL。 P6Spy是一个开源的Java库,设计用于监控应用与数据库之间的通信。它通过拦截JDBC调用来捕获SQL语句,并将这些信息...
在使用P6Spy和SQLProfiler时,首先需要将`p6spy.jar`和`sqlprofiler.jar`添加到项目类路径中。`p6spy-install.zip`包含了一些额外的安装和配置指南,可能包括了如何在不同的数据库驱动中配置P6Spy的说明。`README....
p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用
专门用来监控hibernate的sql输出,进行调试应用程序的工具,找了好久才找到,里面有个配置文件,记住realdriver是你的驱动,而在hibernate设置的驱动是这个驱动代理,p6spy的驱动,相当于在hibernate和数据库之间放...
与P6spy不同,SqlProfiler通常需要与数据库管理系统的客户端一起使用,它可以实时监控SQL执行,包括查询时间、CPU使用、锁定和等待事件等。通过这种方式,开发者可以直观地看到哪些SQL语句可能导致性能问题。 **...
在提供的文件列表中,`sqlprofiler.jar`是P6Spy的核心库,包含实现监控功能的类和方法。`spy.properties`是P6Spy的配置文件,用于设置各种监控参数。 2. **配置spy.properties**:打开`spy.properties`文件,你需要...
本文将详细介绍P6Spy、SQL Profiler和IronTrack SQL这三个工具,帮助你理解和掌握数据库监控与性能分析的方法。 首先,P6Spy是一个开源的Java库,它允许开发者在不修改应用程序代码的情况下,对数据库访问进行透明...
利用P6SPY +SQL Profiler调试、记录、统计web app对数据库的操作, 可以查看到PreparedStatment的执行最终的SQL语句。 有详细的操作说明 下面的这个是集成的完整版。。太大了就不上传了。自己下吧 jahia_v6_...
通过在WebLogic中配置P6Spy并使用SQLProfiler,我们可以获取详细的SQL执行信息,从而优化数据库性能。这个过程涉及到对WebLogic数据源的配置、P6Spy代理驱动的使用以及`spy.properties`的定制。理解这些知识点对于...
同时,将SQL Profiler和P6Spy结合使用,可以提供更全面的数据库性能监控视图。在Java应用中,P6Spy可以捕获和记录所有的SQL请求,而SQL Profiler则可以在服务器端提供更详细的事件追踪。这种组合可以提供从客户端到...
本文将详细探讨如何使用P6Spy来打印iBatis(现为MyBatis)执行的SQL语句,以便进行性能分析和调试。 首先,我们需要了解P6Spy的工作原理。P6Spy通过替换JDBC驱动,将自己插入到应用程序和数据库之间,监听所有的SQL...
2、把p6spy.jar及sqlprofiler.jar放到WEB-INF/lib目录下,将SQL Profiler自带的spy.properties覆盖原来的classes目录下文件 3、修改 原有 JDBC Driver为:com.p6spy.engine.spy.P6SpyDriver其它的都不用更改。 4、...
p6spy 是一个开源的 Java 框架,它的主要功能是在不修改代码的情况下,监控和记录 Java 应用程序中执行的所有 SQL 语句。这个工具对于开发者来说非常有用,因为它可以帮助定位性能瓶颈,特别是在使用 ORM(对象关系...
【p6spy简介】 p6spy是一个开源的Java库,设计用于监视和分析应用程序中执行的SQL语句。...后续篇章将更深入地探讨p6spy的定制以及与其他性能监控工具的配合使用,帮助开发者更有效地管理和优化SQL执行。
**JDBC SQL日志记录** 是数据库测试中不可或缺的一环,通过P6Spy和SQLProfiler,我们可以收集SQL执行日志,分析执行效率,优化SQL语句,进而提升整体系统的性能。这对于监控数据库健康状况,预防潜在问题,以及在...
除了SQL Profiler之外,为了更方便地查看和分析记录的日志,还可以配合使用P6spy这样的工具。P6spy能够将SQL Profiler生成的日志以更加友好的格式展示出来,便于开发者阅读和分析。 综上所述,JDBC SQL Profiler在...
4. **必要的JAR文件**: 包括`p6spy.jar`, `sqlprofiler.jar`, `log4j.jar`等。 #### 三、配置步骤 接下来详细介绍具体的配置步骤。 ##### 第一步:下载并安装SQL Profiler - 访问官方网站或第三方资源网站下载SQL ...
将`p6spy.jar`及`sqlprofiler.jar`两个关键的Jar包放置于ClassPath中。如果是Web应用程序,则应将其放置在`E:\bea\weblogic81\server\ext`目录下,并确保以下环境变量被正确设置: ```plaintext Set CLASSPATH=%...
- 将`p6spy.jar`及`sqlprofiler.jar`文件放置到相应的目录下。对于Web应用程序,这两个文件应该位于`E:\bea\weblogic81\server\ext`目录下。 - 设置`CLASSPATH`环境变量,包含所需的JAR文件路径: ```bat Set ...