欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用p6spy和sqlprofiler查看执行sql

程序员文章站 2022-05-23 22:17:20
...

在公司使用ibaits做持久层存储。虽然ibatis是半自动的,可以编写sql,但是跟一大堆的xml放在一起看起来很不直观。之前虽然可以配置log4j可以打印执行的sql,但是输出的只是预编译的,其中充斥着?,传入的参数不能能直观的检查。在测试的时候往往想查看执行的sql到底是什么,这样对于定位错误非常有用。在网上找到两个工具包来解决这个问题:p6spysql_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和sqlprofiler查看执行sql
            
    
    博客分类: 软件 SQLMySQLJDBCOracleDB2 

使用方法:

目前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的目录结构如图:


    使用p6spy和sqlprofiler查看执行sql
            
    
    博客分类: 软件 SQLMySQLJDBCOracleDB2 
  

我们使用sqlprofilerGUI控制介面,说白了就是一个监听器,在你通过p6spy进行数据库操作时,他就会很清晰地跟踪并列出你的操作,比单单查看那个恶心的spy.log来得舒服!既然基于p6syp当然也要用到p6syp.jar这个包咯,只是必须使用我们下载到的sqlprofiler.zip中的spy.properties来替换原来的项目中的那个文件,因为这个文件是定制过的,所谓的监听器也是靠这个文件才起作用的。同样的需要配置相关参数,修改realDriverlogfile的配置。

运行sqlprofiler.jar并执行测试,可以看到图形界面效果如下:


使用p6spy和sqlprofiler查看执行sql
            
    
    博客分类: 软件 SQLMySQLJDBCOracleDB2 
 


 

  • 使用p6spy和sqlprofiler查看执行sql
            
    
    博客分类: 软件 SQLMySQLJDBCOracleDB2 
  • 大小: 15.8 KB
  • 使用p6spy和sqlprofiler查看执行sql
            
    
    博客分类: 软件 SQLMySQLJDBCOracleDB2 
  • 大小: 6 KB
  • 使用p6spy和sqlprofiler查看执行sql
            
    
    博客分类: 软件 SQLMySQLJDBCOracleDB2 
  • 大小: 153.7 KB