P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。
通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。
一、P6Spy的安装与使用
1、从 http://www.p6spy.com/ 下载P6Spy的文件包,也可以下载它的源文件包来研究;
2、把P6Spy的jar包p6spy.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、运行你的应用程序或Web应用程序,可以在spy.log里看到监测到的sql详细记录信息了。
7、驱动程序加载先后的问题解决
如果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,重新运行即可。
二、结合SQL Profiler进行图形化监控与使用
1、从 http://www.jahia.net/ 下载SQL Profiler的文件包进行安装;
2、把p6spy.jar及sqlprofiler.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、注意要先运行 java -jar sqlprofiler.jar 来启动SQL Profiler,并成功看到启动后界面;
7、然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
8、这样可以在SQL Profiler图形化的界面上看到结果并进行分析了。
并且可以通过保存按钮导出数据库优化建议的索引脚本
三、结合IronTrack SQL进行图形化监控与使用
1、从 http://www.irongrid.com/ironeyesql 下载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是不会生效的,
代码
- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
-
<property name="driverClassName">
-
<value>com.sybase.jdbc2.jdbc.SybDriver</value>
-
</property>
-
<property name="url">
-
<value>jdbc:sybase:Tds:192.168.0.2:6100/db</value>
-
</property>
-
<property name="username">
-
<value>usr</value>
-
</property>
-
<property name="password">
-
<value>pwd</value>
-
</property>
- </bean>
<script>render_code();</script>
因为在spring加载时我们无法控制先加载哪个,spring会报错不能使用com.p6spy.engine.spy.P6SpyDriver连接到数据库,
其实p6spy只是想做jdbc的代理,而不是真正想连数据库,而spring却不知道这些,所以应该采用另外一种方式来集成p6spy
代码
- <bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
-
<property name="driverClassName">
-
<value>com.sybase.jdbc2.jdbc.SybDriver</value>
-
</property>
-
<property name="url">
-
<value>jdbc:sybase:Tds:192.168.0.2:6100/db</value>
-
</property>
-
<property name="username">
-
<value>usr</value>
-
</property>
-
<property name="password">
-
<value>pwd</value>
-
</property>
- </bean>
- <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource"
-
destroy-method="close">
-
<constructor-arg>
-
<ref local="dataSourceTarget"/>
-
</constructor-arg>
-
</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
分享到:
相关推荐
P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。P6Spy 用 Log4J 来...
在Java应用中,P6Spy 可以通过替换JDBC驱动的方式,实现在不影响业务代码的情况下,获取到应用程序与数据库之间的所有交互信息。一旦启用 P6Spy,每次应用程序执行 SQL 语句时,P6Spy 都会记录这些 SQL 的详细信息,...
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
p6spy是一个开源的Java库,设计用于监视和分析应用程序中执行的SQL语句。它的主要用途是在不修改代码的情况下,帮助开发者监控和调试应用程序与数据库之间的交互,尤其适用于那些使用ORM(对象关系映射)框架如...
8. 之后,P6Spy将在指定的日志文件(如`c:/spy.log`)中记录所有的数据库操作,包括完整的SQL语句和执行详情。 通过P6Spy,我们可以得到诸如SQL语句的原始格式、执行时间、异常信息等详细信息,这对于分析和优化...
P6Spy是一款开源的Java数据库监控工具,它允许开发者在不修改应用程序代码的情况下,透明地监控数据库活动。P6Spy通过拦截并记录JDBC调用来获取数据库查询、更新和其他操作的详细信息,这对于性能优化、调试和审计...
4. **配置数据库连接**:在应用程序的数据库连接URL中加入P6Spy的特定后缀,例如`jdbc:p6spy:mysql://localhost:3306/mydatabase`。 5. **启动应用**:重新启动应用,P6Spy即开始生效。 ### 四、日志分析与性能...
**P6Spy** 是一个开源的Java库,用于监控和日志记录应用程序与数据库之间的所有交互。它通过拦截和包裹JDBC驱动程序来实现这一功能,使得开发人员和DBA可以详细跟踪SQL查询,这对于性能优化、问题排查以及理解应用...
P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。 通过P6Spy可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。 此压缩包包含文件和说明
在IT行业中,数据库操作是应用程序的核心部分,尤其是对于使用ORM(对象关系映射)框架如Hibernate的项目。在开发和优化过程中,清晰地查看和理解执行的SQL语句至关重要。`p6spy`是一个非常实用的开源工具,它能够...
在IT行业中,数据库操作是应用程序的核心部分,而JDBC(Java Database Connectivity)是Java程序员与数据库交互的标准接口。然而,为了优化数据库性能、排查问题,我们往往需要监控和分析应用程序执行的SQL语句。这...
P6Spy 是一个开源的数据库监视工具,它通过拦截 JDBC 调用来获取数据库操作的详细信息。这个工具在不修改应用程序代码的情况下,可以帮助开发者和DBA监控数据库访问行为,包括SQL语句的执行时间、性能分析以及日志...
P6Spy是一个广泛使用的开源框架,它允许开发者无侵入地监控和记录应用程序中的所有SQL语句。这个项目的目标是借鉴P6Spy的部分源码,创建一个自定义的SQL执行监控器,以满足特定的需求或提供更定制化的功能。 P6Spy...
配置P6Spy需要在应用的JDBC连接字符串中插入P6Spy的驱动,并在配置文件中设置日志格式和级别。 以下是配置P6Spy的基本步骤: 1. 下载并添加P6Spy的jar文件到项目的类路径中。 2. 修改JDBC连接字符串,使其指向P6Spy...
P6Spy是一个SQL日志记录器,它能够捕获并记录应用程序中的所有数据操作,包括插入、更新、删除和查询等。通过集成Log4J,P6Spy将JDBC调用的日志信息写入日志文件,为开发人员提供了一个深入了解数据库操作的窗口。 ...
2. **修改驱动**:在应用程序中,将原本的数据库驱动替换为P6Spy的代理驱动。 3. **配置Spy.properties**:这是P6Spy的主要配置文件,需要设置包括日志文件路径、日志格式、要拦截的数据库连接字符串等信息。 4. **...
在Java Web开发中,Tomcat是一款广泛应用的开源Web服务器和应用服务器,主要用于运行Servlet和JSP应用。P6spy和SqlProfiler则是两个用于数据库性能监控和分析的工具。这篇内容将详细解释如何将这三者集成,以提升对...
首先,P6spy是一个开源的Java库,主要用于监控和分析应用程序与数据库之间的SQL交互。它通过透明地拦截并记录所有的SQL语句,为开发者和DBA提供了宝贵的性能优化信息。P6spy可以轻松集成到现有的应用程序中,无需...
这表明所有通过p6spy拦截的SQL语句将会被记录到指定位置的日志文件中。 #### 三、p6spy与Hibernate的集成 - **概述**:文档提到p6spy可以用于拦截Hibernate通过JDBC执行的SQL语句。Hibernate是一个流行的ORM框架,...
P6Spy是一个开源的Java库,主要用于监控和日志记录应用程序与数据库之间的SQL交互。 **P6Spy简介** P6Spy是一个强大的数据库监视工具,它通过拦截和记录应用程序发出的SQL语句,为开发者和DBA提供详细的性能分析...