viernes, 19 de agosto de 2011

Diferencias entre las lecturas "Sequential" y "Scattered" de los DBfiles

Ambos eventos significan tiempo esperado de E / S para completar las solicitudes de lectura.

- Lectura "sequential" de los DBfile:

Una operación de lectura de datos sequential lo hace dentro de memoria contigua (p3=1, pero pueden ser multiples bloques).
I/Os de single block son normalmente resultado del uso de índices.

Este evento es tambien utilizado durante los rebuilding de los controlfile y las lecturas de los datafile headers (P2=1).
Por lo general, este evento indica disk contention sobre las ecrituras de los índices.

- Lectura "scattered" de los DBfile:

Este tipo de lectura es similar a la anterior a excepción de que la sesión lee multiples bloques de datos y los "dispersa" (traduccion
literal de scattered) en diferentes y discontinuos buffers en la SGA.
Normalmente indican disk contention sobre full table scans. Rara vez, la datos proveninetes de un full table scan pueden ser puestos dentro de una buffer area contigua, entocnes estas esperas podrían mostrarse como lecturas "sequential" en lugar de "scattered".
Sin embargo estas lecturas nunca leeran solo un bloque (p3 siempre es >= 2)

Con el siguiente query podemos observar la diferencia de espera entra las lecturas sequential y scattered:

SELECT a.average_wait "SEQ READ", b.average_wait "SCAT READ"
FROM sys.v_$system_event a, sys.v_$system_event b
WHERE a.event = 'db file sequential read'
AND b.event = 'db file scattered read';


SEQ READ              SCAT READ
------------          ------------
.68                       1.5

Espero les haya servido.

Saludos!
Gondalf.