AOWS

Just another adrian’s weblog

Profiling SQL con P6Spy

leave a comment »

P6Spy es una “pequeña” utilidad que nos permite analizar las consultas SQL que lanza una aplicación y su rendimiento. En realidad es un wrapper de nuestro driver JDBC que intercepta y registra las sentencias en un log que posteriormente podemos analizar.

Esto es especialmente útil si queremos ver qué consultas se están generando al utilizar por ejemplo Hibernate o EJB, o cuáles pueden llegar a ser un cuello de botella al poder ver el tiempo total de ejecución de cada una.

Para empezar a usarlo hay que seguir los siguientes pasos:

  1. Instalación: si se realiza a través de Maven, tan fácil como añadir la dependencia:
    <dependency>
        <groupId>p6spy</groupId>
        <artifactId>p6spy</artifactId>
        <version>1.3</version>
    </dependency>
    

    En caso contrario, habría que copiar los archivos p6spy.jar y spy.properties a nuestro classpath.

  2. Configuración del datadsource: una vez tengamos la librería en nuestra aplicación, tenemos que cambiar el datadsource para utilizar el nuevo driver. En este caso es com.p6spy.engine.spy.P6SpyDriver. Con Spring sería algo como:
    <bean id="dataSourceTarget"
          class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>oracle.jdbc.driver.OracleDriver</value>
        </property>
        <property name="url">
            <value>jdbc:oracle:thin:@localhost:1521:xe</value>
        </property>
        <property name="username"><value>test_app</value></property>
        <property name="password"><value>test_app</value></property>
    </bean>
    <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
        <constructor-arg>
            <ref local="dataSourceTarget"/>
        </constructor-arg>
    </bean>
    
  3. Configuración P6Spy: ahora tenemos que indicarle a P6Spy cuál es en realidad el driver que debe utilizar, por ejemplo oracle.jdbc.driver.OracleDriver. Creamos un archivo spy.properties en nuestro classpath donde le indicamos el archivo de log y el driver real de la aplicación:
    module.log=com.p6spy.engine.logging.P6LogFactory
    realdriver=oracle.jdbc.driver.OracleDriver
    logfile=p6spy.log
    

Después de estos 3 pasos probamos a ejecutar de nuevo la aplicación, y veremos cómo se va escribiendo en el archivo de log todas las consultas que se ejecutan. El problema es que este registro es poco legible, por lo que podemos usar alguna de estas herramientas gráficas:

Written by adrian

19 septiembre, 2009 a 11:08

Publicado en Posts

Tagged with , , , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: