EXPLAIN con CA SQL-Ease for DB2 for ZOS
Supongo que, al igual que a mi, en ocasiones os habrá ocurrido que, tras terminar la codificación de un Cobol, procedéis a ejecutarlo y descubrís que su rendimiento en máquina está siendo bastante deficiente. En estos casos, ¿cómo podemos determinar el punto del programa que está provocando el retraso de la ejecución? Para ayudarnos a realizar esta búsqueda disponemos de la herramienta CA SQL-Ease for DB2 for ZOS.
El comando EXPLAIN de CA SQL-Ease for DB2 for ZOS nos sirve para medir el tiempo estimado de ejecución de una sentencia SQL. Recordad que no deberíamos poner en producción ninguna sentencia cuyo tiempo de ejecución sea superior a los 100 milisegundos. Teniendo en cuenta esto, EXPLAIN nos va a permitir detectar cuáles son las instrucciones SQL de nuestro programa que van a tener un pobre rendimiento a la hora de ejecutarse.
Hay que tener en cuenta que se trata de una aplicación muy potente. Su uso nos va a permitir que las sentencias SQL de nuestros programas Cobol lleguen al entorno de producción con tiempos de ejecución inferiores a 100 ms. Obviamente, siempre es posible que surja algún error adicional pero no podemos negar que, con EXPLAIN, las posibilidades de que se produzca un problema de rendimiento son muy inferiores.
¿Cómo ejecutar EXPLAIN en un Cobol?
Entrando ya en materia, ahora vamos a ir viendo cuáles son los pasos que tendríamos que seguir para ejecutar el comando EXPLAIN en nuestro programa Cobol. Como veréis, no se trata de algo complicado. Una vez que hayamos realizado el procedimiento por primera vez, el resto de las ejecuciones las podremos realizar casi sin esfuerzo.
Estos son los pasos:
1º) En primer lugar, tendremos que proceder a seleccionar el programa a valorar y entrar en el código del objeto en modo edición.
2º) Nos situamos en la declaración SQL para la que deseamos obtener una evaluación de su rendimiento en ejecución. Os recuerdo que este tipo de declaraciones estarán situadas entre cualquiera de las instrucciones EXEC SQL y END-EXEC de nuestro programa.
3º) A continuación, insertamos una E en alguna de las líneas de la declaración SQL. Esta marca debe introducirse en la columna en la que figura el número de línea del programa.
4º) Introducimos la instrucción SQLEASE en la línea de comandos. Esto hará que se arranque la aplicación CA SQL-Ease for DB2 for ZOS.
5º) Tras pulsar INTRO se nos abrirá el menú principal de la herramienta. Aquí tendremos que seleccionar la opción 2 - EXPLAIN SQL.
6º) A continuación, se nos mostrará un informe en el que podremos ver toda la información asociada a la evaluación del rendimiento de ejecución de la sentencia SQL seleccionada.
7º) Si nos desplazamos una página hacia abajo, podremos ver la información del rendimiento de la ejecución en el apartado ACCESS PATH ANALYSIS. En la línea COST encontraremos el importante dato que hace referencia al tiempo (en milisegundos) que tardará en ejecutarse nuestra sentencia SQL.
En el ejemplo vemos que el coste del SQL sería de 284 milisegundos. Como hemos dicho más arriba, cualquier cosa que pase de los 100 milisegundos no es aceptable y, por tanto, tendríamos que proceder a la optimización de nuestro código antes de entregarlo al cliente.
8º) Adicionalmente, en el análisis del camino de acceso también podremos encontrar información acerca de las tablas a las que se va entrando y el índice por el que se está accediendo a las mismas en la query SQL analizada.
En el ejemplo vemos que se está accediendo a la tabla DB2 denominada SITUTD mediante el índice SITUI2. Este camino de acceso nos puede ayudar y darnos ideas a la hora de optimizar la query analizada (en el caso de que sea necesario proceder a su modificación).
Si seguimos los pasos anteriormente comentados no tendremos problemas para ejecutar un EXPLAIN desde el editor de nuestro programa Cobol. El próximo día, en un nuevo post, os explicaré cómo podemos lanzar un chequeo EXPLAIN desde el propio informe ACCESS PATH ANALYSIS. Esta segunda funcionalidad nos vendrá muy bien para ir haciendo pruebas a la hora de reducir el consumo de una sentencia SQL por debajo de los 100 milisegundos.
Pues nada, eso es todo por ahora. Quedáis invitados a la segunda parte del post, donde completaremos nuestra visión inicial (básica) de la herramienta CA SQL-Ease for DB2 for ZOS. Espero volver a veros por aquí...
Saludos.