Télefono:
91 626 61 20
Dirección:
C/ Copenhague 6. Edificio Al Andalus. Planta 2ª. Oficina 5. 28232. Las Rozas. Madrid
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