一个页面从请求开始到用户完整的看到所有内容,这是一个很复杂的过程,仅仅是针对数据库访问而言,它可能需要访问好几个表,执行很多个SQL语句才能出来结果。那么我怎么才能知道在所执行的这些SQL语句里面哪个效率最差、最慢对页面的速度影响最大呢? 找出这些执行效率差的SQL语句便是优化的第一步,今天介绍一个基于p6spy的可视化SQL语句执行监控工具——IronTrackSQL。
先来看看这个工具的主界面
这个工具会帮我们打印所执行的每一个SQL语句,以及执行SQL语句执行了多少时间,执行的时间又包括编译多长时间、运行多长时间、取结果又需要多长时间,数据非常之详细。
有了这个东西是不是一下子就能发现我们的程序执行慢的瓶颈所在了嘛?接下来看看怎么使用
IronTrackSQL是利用p6spy这个项目来进行SQL监控的,要在我们的项目中引入这个东西是很简单的,而且不需要改动任意一行代码,你需要做的就是把驱动程序类换一下而已。
在你配置数据库连接池的地方将驱动类换成 com.p6spy.engine.spy.P6SpyDriver,然后把 spy.properties 文件拷贝到源码根目录,让它自动编译到类路径中,并且修改这个文件的 realdriver 配置为真正的数据库JDBC驱动类名,例如 : com.mysql.jdbc.Driver
另外你还需要三个jar包放到你项目的类路径中,例如web项目的WEB-INF/lib目录,这三个jar包是p6spy.jar,irontracksql.jar,log4j-xxxx.jar。OK后启动你的应用程序,就会在控制台上看到这么一行:
monitor port is set to 2000
这也就是说明p6spy已经起作用了,它绑定的端口是2000,接下来我们就可以用IronTrackSQl来查看运行的情况了,执行命令行程序
java -jar irontracksql.jar
就可以打开前面的界面了,点击工具栏上的Connect按钮就会看到SQL语句源源不断的跑出来:)
你可以到下面这个地址下载前面提到的文件
IronTrackSQL http://www.irongrid.com/irontracksql
IronTrackSQL下载 http://www.dlog.cn/uploads/files/IronTrackSQL.zip
P6SPY http://p6spy.sourceforge.net |