P6Spy 、 SQL Profiler
P6Spy
在优化Hibernate性能的时候,很重要的一点就是要看到Hibernate底层执行的SQL
虽然通过打印日志配合Hibernate的show_sql属性能够拼凑出Hibernate底层执行的SQL,但是很不方便,也不直观
下载地址:http://sourceforge.net/projects/p6spy/files/p6spy/
使用起来非常简单(项目只使用Hibernate,没有使用Spring):
1,将p6spy.jar加入项目工程classpath中
2,将p6spy配置文件spy.properties加入项目工程/src目录下
3,修改Hibernate配置文件hibernate.cfg.xml:
<!--
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
-->
<property name="connection.driver_class">
com.p6spy.engine.spy.P6SpyDriver
</property>
4,修改p6spy配置文件:
驱动修改为Hibernate所使用的驱动
# 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 realdriver=com.mysql.jdbc.Driver
deregisterdrivers一定要修改为true,原因注释已经说的很清楚了
#the DriverManager class sequentially tries every driver that is
#it's possible to registered to find the right driver.In some instances,
#load up the realdriver before the p6spy driver, in which case
#your connections will not get wrapped as the realdriver will "steal"
#the connection before p6spy sees it. Set the following property to "true"
#to cause p6spy to explicitily deregister the realdrivers
deregisterdrivers=true
修改日志记录方式,可以选择控log4j控制日志输出、控制台输出日志、文件记录日志:
#specifies the appender to use for logging
#appender=com.p6spy.engine.logging.appender.Log4jLogger
#appender=com.p6spy.engine.logging.appender.StdoutLogger
appender=com.p6spy.engine.logging.appender.FileLogger #name of logfile to use, note Windows users should make sure
#to use forward slashes in their pathname (e:/test/spy.log)
#(used for file logger only)
logfile=./log/spy.log # append to the p6spy log file. if this is set to false the
# log file is truncated every time. (file logger only)
append=true #The following are for log4j logging only
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n #log4j.appender.CHAINSAW_CLIENT=org.apache.log4j.net.SocketAppender
#log4j.appender.CHAINSAW_CLIENT.RemoteHost=localhost
#log4j.appender.CHAINSAW_CLIENT.Port=4445
#log4j.appender.CHAINSAW_CLIENT.LocationInfo=true log4j.logger.p6spy=INFO,STDOUT
spy.log:
1399255288210|4|0|statement|select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from
TEST_USER user0_ where user0_.id>2|select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from
TEST_USER user0_ where user0_.id>2
1399255288217|-1||resultset|select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from
TEST_USER user0_ where user0_.id>2|age0_ = 30, id0_ = 3, name0_ = ll
SQL Proflier
P6Spy的日志非常繁琐,很难进行统计
SQL Profiler是一款基于P6Spy的图形化监控工具,不但能够监控SQL执行,统计SQL的执行结果,还能根据SQL的执行效能提供优化建议
下载地址:http://sourceforge.net/projects/sqlprofiler/files/sqlprofiler/
要想在原有的P6Spy的基础上运行SQL Profiler,需要对P6Spy的配置文件进行一些修改:
#specifies the appender to use for logging
appender=com.p6spy.engine.logging.appender.Log4jLogger
#appender=com.p6spy.engine.logging.appender.StdoutLogger
#appender=com.p6spy.engine.logging.appender.FileLogger #The following are for log4j logging only
#log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
#log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
#log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender
log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost
log4j.appender.SQLPROFILER_CLIENT.Port=4445
log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true #log4j.logger.p6spy=INFO,STDOUT
log4j.logger.p6spy=DEBUG, SQLPROFILER_CLIENT
然后将sqlprofiler.jar放至e盘下,打开cmd运行java -Xms200m -Xmx512m -jar sqlprofiler.jar即可
更加详细的介绍,参见:http://www.ibm.com/developerworks/cn/java/j-lo-p6spy/
P6Spy 、 SQL Profiler的更多相关文章
- 【性能诊断】二、单功能场景的性能分析(fiddler、SQL Profiler)
Fiddler fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测 ...
- SQL Profiler工具简介
一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...
- 十、K3 WISE 开发插件《SQL Profiler跟踪单据操作时产生的SQL语句》
=================================== 目录: 1.查询帐套的数据库DBID 2.配置需要跟踪数据库的DBID 3.配置跟踪参数 4.跟踪进行 5.分析跟踪语句 === ...
- 161017、SQL必备知识点
经典SQL语句大全 基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql ser ...
- 利用SQL Profiler处理开销较大的查询
当SQL Server的性能变差时,最可能发生的是以下两件事: 首先,某些查询产生了系统资源上很大的压力.这些查询影响整个系统的性能,因为服务器无法足够快速地服务其他SQL查询. 另外,开销较大的查询 ...
- 利用SQL Profiler 追踪数据库操作
SQL Server 事件探查器 是一个界面,用于创建和管理跟踪并分析和重播跟踪结果. 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤. SQL S ...
- [MySQL优化] -- 如何使用SQL Profiler 性能分析器
mysql 的 sql 性能分析器主要用途是显示 sql 执行的整个过程中各项资源的使用情况.分析器可以更好的展示出不良 SQL 的性能问题所在. 下面我们举例介绍一下 MySQL SQL Profi ...
- MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存
二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...
- MyBatis学习(二)、SQL语句映射文件(1)resultMap
二.SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyB ...
随机推荐
- elisp语法
http://stackoverflow.com/questions/3855862/setq-and-defvar-in-lisp defvar, let, setq的语法分析: defvar in ...
- 搭建linux下teamspeak3多人语音服务器
最近项目中新的需求,需要支持多人在线实时通话.就安装测试一下teamspeak.http://www.teamspeak.com/ 主页有服务器版本和客户端版本供下载安装.软硬件环境: melot@m ...
- jira部署,主机迁移,数据库迁移,jira
1,linux环境下快速部署; wget http://wpc.29c4.edgecastcdn.net/8029C4/downloads/software/jira/downloads/atlass ...
- MySQL分支Percona, cmake编译安装
Percona是在MySQL基础上改进的,在功能和性能上有着很显著的提升.该版本提升了在高负载情况下的InnoDB的性能,为DBA提供一些非常有用的性能诊断工具:另外有更多的参数和命令来控制服务器行为 ...
- Maven构建Web项目问题汇总
1.Dynamic Web Module 3.0 requires Java 1.6 or newer? 修改pom.xml文件,如下: <build> <plugins> & ...
- 用一个例子学习CSS的伪类元素
CSS伪类元素是一个非常酷的东西!首先我们理解一下它,:before :after 伪类元素,也就是虚假的元素.它可以插入在元素的前面或者后面,而在HTML文档结构中,它却是不存在的,因为Js是无法通 ...
- Java邮件服务学习之三:邮箱服务客户端-Java Mail
一.java mail的两个JAR包 1.mail.jar:不在JDK中,核心功能依赖JDK4及以上,该jar包已经加入到java EE5: 下载地址:http://www.oracle.com/te ...
- Azure 公网及内网ip绑定方法
此文章为我的云服务绑定情况,仅供参考,适用于已经创建vm,但开始未绑定vip,后期进行vip的绑定,注意:绑定ip会造成虚拟机暂时离线. -Location(vm所在地) 注意区分 北部和东部: Ch ...
- C#学习笔记(十二):正则表达式
Regex 正则表达式的类,我们可以通过该类来使用正则表达式. 比如下面我们使用Regex来判断输入的字符串是否符合指定的格式: using System; using System.Text.Reg ...
- ElasticSearch+Springboot实际应用:索引同步建设,搜索过程
1.介绍 springboot框架,众多自动化的部署和约定配置,造成了springboot的着手麻烦,熟练后可以快速快捷进行开发,常用作快捷开发的java底层框架.各位看官都是大神,自行体会. ...