关于P6Spy、SQL profiler和Irontrack SQL的使用文档

来源:互联网 发布:海关数据如何分析 编辑:程序博客网 时间:2024/05/12 20:12

关于P6Spy、SQL profiler和Irontrack SQL的使用文档

一、工具介绍

(1)关于P6Spy
P6Spy是一套可以帮助我们直接跟踪每一个 SQL 语句的执行情况,以及进行SQL语句的优化、索引的优化工作的工具。
P6Spy是无侵入性的,在使用过程中而且根本不需要更改任何一行代码,简单地讲,我们可以认为 P6Spy 就是一个代理(Proxy),它只做了一层对 JDBC 驱动的拦截,然后转发出去,这样的设计与实际的应用程序没有任何的耦合性,除了在配置中将驱动程序改成 P6Spy 的拦截驱动外,程序其他地方并不需要做任何的改变。
(2) 关于sqlprofiler
SQL Profiler 是一个由 Jahia.org 提供的基于 P6Spy 引擎的快速剖析工具,用来统计 SQL 查询语句以便了解哪里是性能瓶颈,在哪里创建索引或者采取相应的办法才能提高效率,并且能根据 SQL 查询语句的情况帮你生成合适的索引脚本。
(3)关于IronTrack SQL
IronTrack SQL 能通过对 JDBC 的包装来拦截应用程序对数据库的请求,提供所有流动在数据库与应用程序之间的 SQL 统计信息并用多张图表展现,可以快速优化程序的性能,完成性能监控。IronTrack SQL 的使用也不需要修改任何代码或者在数据库端安装任何程序,只需要在测试时把依赖的 JDBC 替换就可以了。

二、工具的配置

(1)关于P6Spy的配置步骤
 下载P6SPy的安装包;
 把 P6Spy 的 jar 包中的 p6spy.jar文件 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
 把 spy.properties 放到 CLASSPATH 目录下,如果是 Web 应用程序放在 YourWebApp/WEB-INF/classess/ 目录下(注意不是 lib/ 目录,如果使用Eclipse,可以直接放在项目的src目录下)
 修改你应用系统中的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的全部使用默认值,暂时先都不用修改;
 打开配置文件 spy.properties 文件,找到 realdriver,把它的值改为你的应用系统的真正的数据库驱动名称;
 运行你的应用程序或 Web 应用程序,可以在 spy.log 里看到 P6Spy 监测到的 SQL 详细的执行与操作的记录信息了,里面包含有完整的 SQL 执行参数。
提示:在spy.properties文件中的"logfile"中可以设置spy.log文件的存放路径,如logfile=E:\ spy.log 则表示存放在E盘根目录下。
(2)P6SPy结合SQL Profiler进行图形化监控与使用
Sqlprofiler的配置步骤和P6Spy的配置步骤非常相似,如下:
 下载sqlprofiler的安装包;
 把 p6spy.jar 及 sqlprofiler.jar 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
 把 spy.properties 放到 CLASSPATH 目录下,如果是 Web 应用程序就放在 YourWebApp/WEB-INF/classess/ 目录下(注意不是 lib/ 目录,如果使用Eclipse,可以直接放在项目的src目录下);
 修改你应用系统中的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的全部使用默认值,暂时不用修改;
 打开 spy.properties 文件,把 realdriver 的值改为你的程序的数据库驱动名称;
 注意要先运行 YourWebApp/WEB-INF/lib/ 目录下的sqlprofiler.jar 来启动 SQL Profiler,并成功看到启动界面;
 然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
这样就可以在 SQL Profiler 图形化的界面上看到结果并进行分析了。如下图所示:

提示:使用SQL Profiler工具时必须先启动SQL Profiler,然后再运行应用程序,这样才能让SQL Profiler成功连接到应用中的P6Spy。那是因为SQL Profiler的spy.properties里把logger设置成log4j的SocketAppender。这样p6spy在启动的时候就会让Appender去连接SQL Profiler开启的端口,如果连接失败,之后不会再创建socket。因此必须先启动SQL Profiler.
当监测界面底端显示如下图时,即表示SQL Profiler成功连接P6Spy:

(3)P6SPy结合IronTrack SQL进行图形化监控与使用
 下载IronTrack SQL的安装包;
 把 irontracksql.jar, p6spy.jar 和 log4j-1.2.8.jar 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
 把 spy.properties 放到 CLASSPATH 目录下,如果是 Web 应用程序就放在 YourWebApp/WEB-INF/classess/ 目录下,注意不是 lib/ 目录,如果使用Eclipse,可以直接放在项目的src目录下;
 修改你程序的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的都不用更改;
 打开配置文件 spy.properties 文件,找到 realdriver,把它的值改为你的应用系统的真正的数据库驱动名称;
 设置监听端口号 monitorport=2000;
 先运行 java -jar irontracksql.jar 来启动 IronTrack SQL; 再启动你的应用程序或服务器;
 可以在 IronTrack SQL 图形化的界面上看到结果并进行分析了。
使用IronTrack SQL好处:并不要求先启动 Iron TrackSQL,相比于 SQL Profiler 的被动监听,它采取的是主动去查询。更适于远程监控,想在何时监控就启动,监控完毕就关闭,不至于像 SQL Profiler 那样一旦监听窗口坏了一下,就得重启应用。这样对应用程序的性能影响也较小些的
(4)spy.properties文件的配置
详细的配置资料可参考下面文档末尾的网站链接。在这里简单说下部分常用的属性的配置。
 realdriver:配置应用系统使用的数据库驱动程序名称,如会员营销系统使用的是oracle数据库,则配置为:realdriver=oracle.jdbc.driver.OracleDriver
 filter:选择是否对日志内容进行过滤,有false|true两个选项
在filter下有几个配置 include、exclude、和 sqlexpression,它们用来设置过虑规则。例如我们不想输出users、constants,就配置如下:
exclude = users,constants
 #appender=com.p6spy.engine.logging.appender.Log4jLogger
#appender=com.p6spy.engine.logging.appender.StdoutLogger
#appender=com.p6spy.engine.logging.appender.FileLogger
这三个属性分别设置log文件的输出目的地为:Log4j、控制台和文件中。

 

 append:值为true时,则设置让 SQL 语句输出到日志文件。
(5)spy.log文件的格式简介
使用P6Spy输出的spy.log文件,每一行的信息格式如下:
current time|execution time|category|statement SQL string|effective SQL string
current time – 指当前时间
execution time – 指SQL语句的执行时长,包括执行 SQL 和处理结果集的时间(可以参考来调优)
category  – SQL的语句分类,statement、resultset 、rollback等
statement SQL string – 查询语句。可能是 prepared statement,表现为 select * from table1 where c1=?,问号参数形式
effective SQL string – 代入参数值的查询语句,如 select * from table1 where c1=7

参考资料:
1、http://sourceforge.net/projects/p6spy
2、http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/index.html


原创粉丝点击