ARTICULO: Análisis de consultas II

Como ya vimos en el artículo anterior, IBM informix permite habilitar una traza de consultas, tanto a nivel de sesión como a nivel global. En este artículo vamos a ver la información que obtenemos para su análisis.

Para obtener la información recolectada de las consultas podemos utilizar dos herramientas. La primera es el comando onstat -g his, que nos saca por consola la información ya formateada. La otra opción es consultar la tabla syssqltrace de sysmaster que también contiene toda la información y nos permite utilizar SQL para realizar operaciones sobre la información.

En este caso nos vamos a centrar en la salida de onstat, puesto que la información que hay en syssqltraces es la misma.

Statement history:

Trace Level High
Trace Mode User
Number of traces 2000
Current Stmt ID 6
Trace Buffer size 2008
Duration of buffer 73515 Seconds
Trace Flags 0x0000FF21
Control Block 0x47fdc028

La cabecera de la salida de onstat -g his ofrece información sobre la configuración actual de la traza:

Trace Level: nivel de traza (low, medium, high)
Trace Mode: modo de la traza (global, user)
Number of traces: número de trazas a guardar
Current Stmt ID: identificador de la consulta actual. Se le asigna un identificador único a cada consulta
Trace Buffer size: tamaño del buffer
Duration of buffer: número de segundos desde que se registró la primera consulta hasta la última
Trace Flags: flags de la traza
Control Block: dirección de memoria en la cual está la traza

A continuación nos viene la información de cada consulta realizada:

Statement # 6: @ 0x47fdc070

Database: stores_demo
Statement text:
select * from customer,cust_calls where
customer.customer_num=cust_calls.customer_num and customer.customer_num < 40 SELECT using tables [ customer cust_calls ] Statement: identificador de la consulta realizada Database: base de datos accedida Statement text: consulta realizada y tablas accedidas Después vienen los iteradores: Iterator/Explain ================ ID Left Right Sender Next Est Cost Est Rows Num Rows Partnum Type 2 0 0 0 0 1 1 1 3145792 Index Scan 3 0 0 0 0 1 1 1 3145812 Index Scan 1 2 3 0 0 3 1 1 0 Nested Join ID: identificador del iterador Left: operador izquierdo del iterador (que se corresponde con alguno de los id de iteradores) Right: operador derecho del iterador (que se corresponde con alguno de los id de iteradores) Est Cost: coste estimado Est rows: número de filas estimado Num rows: filas obtenidas Partnum: partition number de la tabla o índice Type: tipo de iterador A continuación vemos los datos de ejecución de la consulta: Statement information: Sess_id User_id Stmt Type Finish Time Run Time TX Stamp PDQ 59 1000 SELECT 13:34:29 0.0001 60a8bd5 0 Sess_id: identificador de la sesión que lanzó la consulta User_id: identificador del usuario que lanzó la consulta Stmt Type: tipo de consulta Finish Time: hora de finalización Run Time: tiempo de ejecución TX Stamp: Momento en el cual se registró el BEGIN WORK de esta transacción PDQ: nivel de PDQ utilizado Por último tenemos toda la información de las estadísticas sobre esta consulta, que nos aportan información sobre los accesos a disco, uso de caches, bloqueos, etc.: Statement Statistics: Page Buffer Read Buffer Page Buffer Write Read Read % Cache IDX Read Write Write % Cache 0 1 100.00 0 0 0 0.00 Lock Lock LK Wait Log Num Disk Memory Requests Waits Time (S) Space Sorts Sorts Sorts 0 0 0.0000 0.000 B 0 0 0 Total Total Avg Max Avg I/O Wait Avg Rows Executions Time (S) Time (S) Time (S) IO Wait Time (S) Per Sec 1 0.0001 0.0001 0.0001 0.000000 0.000000 12178.8952 Estimated Estimated Actual SQL ISAM Isolation SQL Cost Rows Rows Error Error Level Memory 3 1 0 0 0 CR 37408

Proyectos y Soluciones
Proyectos y Soluciones
Artículos: 163