Activar Explain Plan desde SQLPLUS

En ocasiones es posible que sea necesario visualizar el plan de ejecución (o explain plan) de una sentencia SQL, para ayudar a la optimización de la misma. La situación que se plantea suele seguir un patrón: se tiene una nueva aplicación, o un nuevo módulo que implementa una funcionalidad extra para una aplicación ya existente, y resulta que tras la ejecución de este nuevo desarrollo el rendimiento de la base de datos se ve degradado. En este caso, hay que localizar cuales son las sentencias SQL que se están ejecutando y visualizar el explain plan de las sospechosas de producir la degradación.

Si se dispone de una interfaz gráfica tipo EMGC, la cuestión es muy sencilla. En caso contrario, habrá que echar mano de línea de comandos, scripts, etc. (es decir, lo que más nos gusta a los administradores de sistemas🙂 )

Supongamos que la sentencia sospechosa es la siguiente:

SQL> select * from prueba;
         A
———-
         1
         2
SQL> select * from prueba;

         A
----------
         1
         2

Para activar el plan de ejecución de esta sentencia, sin necesidad de salir de la sesión (y por lo tanto, dentro del esquema al que pertenece la misma) se ejecutaría lo siguiente:

SQL> set autotrace traceonly explain
SQL> select * from prueba;

Plan de Ejecución
----------------------------------------------------------
Plan hash value: 3279922394

----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |     1 |    13 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| PRUEBA |     1 |    13 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------

Como se ve, al activar el explain plan (instrucción resaltada en rojo) la ejecución de la sentencia ya no devuelve el resultado de la misma, si no un resumen esquemático que indica como va a ser ejecutada: si se van a usar índices o no, las filas tratadas, el costo de CPU, el tiempo de ejecución. Una información que habrá que poner en común con el equipo de desarrollo para optimizar la sentencia.

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: