Está en la página 1de 29

Afinamiento SQL para

Desarrolladores

redPartner
Eventos de Espera
en la Base de Datos

1
Por qu preocuparnos por el tiempo?
El Performance siempre se trata de tiempo

El tiempo de los usuarios es crtico para las empresas


Tiempo es dinero.

redPartner
Las mejoras en performance a menudo buscan hacer las
cosas ms rpido.

Mtodo: Encontrar en que se gasta el tiempo del


sistemareducir stos tiempos!

2
Database time (DB Time)

Tiempo gastado en llamadas a la base de datos por las sesiones de


foreground
Incluye CPU time, IO time y wait time

redPartner
Excluye tiempos de espera idle.

Database time es el tiempo total gastado por los


procesos de usuario trabajando activamente o
esperando en una peticin de base de datos.

3
Una Sola Sesin

redPartner
Buscar
Libros
Leer los
Reviews de un
Libro
Adicionar
al carrito
de
compras
Checkout

= tiempo gastado en la bd Tiempo

4
Conceptos Fundamentales
Active Session =
Sesin que actualmente est trabajando en un llamado a la base de datos
Database Time (DB Time) =
Tiempo total de las sesiones en llamados activos a la bd

redPartner
Average Activity of the Session (% Activity) =
La proporcin del tiempo activo al tiempo de reloj

Adicionar
Leer los
Buscar al carrito
Reviews de un Checkout
Libros de
Libro
compras

= tiempo gastado en la bd Tiempo

5
Active sessions

Sesiones en Foreground en una db call

Bien sea en CPU, esperando por IO, o waiting (not idle)

redPartner
Active sessions son sesiones que
contribuyen al DB time en un momento
especfico.

6
Mltiples Sesiones
DB Time = Suma de DB Time de todas las Sesiones

Avg. Active Sessions = Sum of Avg. Activity Over All Sessions

redPartner
En el tiempo t tenemos 2 sesiones activas
User 1

User 2

User 3

User n
Tiempo
t
= tiempo gastado en bd

7
La frmula
Database Time
Avg. Active Sessions =
Tiempo reloj(Transcurrido)

redPartner
Buscar
Libros
Leer los
Reviews de un
Libro
Adicionar
al carrito
de
compras
Checkout

= tiempo gastado en la bd Tiempo

8
Ejemplo- que se hace con el db time ?

Talvez deba
CPU investigar los
other waits?
I/O

redPartner
Other Waits

User 1

User 2

User 3

User n

9
Carga del sistema y el DB time

Mas usuarios
=> Mas llamadas a la bd
=> Incrementa el DB Time

redPartner
Transacciones ms largas
=> Llamadas ms largas
=> Incrementa el DB Time

DB time sube a medida que aumenta la carga del sistema.

10
Desempeo del sistema y DB time

IO performance se degrada
=> IO time sube
=> DB time sube

redPartner
El performance de la aplicacin se degrada
=> Incrementan tiempos de espera
=> DB time sube

DB time sube a medida que se degrada el performance del sistema.

11
Afinamiento de DB Time
DB Time puede sumarse a distintos niveles
Database / instance
Servicio / mdulo / accin
Sesin / user / client id

redPartner
SQL id / rowsource

Para Oracle, una mejora en Performance


significa hacer el mismo trabajo en un menor
DB Time

12
Solucin de problemas de
Performance Fase 1
Descubrir el problema:
Llamada del usuario , otro tipo de queja
Monitoreo del sistema
Alcance del problema

redPartner
Qu tan amplio es su alcance ?
Cual es la severidad ?
Quin est malgastando el DB Time y que tnto ?
Diagnstico del problema

13
Concepto: Esperas

Los eventos de espera indican que una sesin o


proceso tiene que esperar a que se complete un

redPartner
evento antes de poder continuar con la ejecucin
de una operacin.
Se los puede identificar en la vista
V$EVENT_NAME

14
Eventos de espera Comunes
Evento de Espera Area
buffer busy waits Buffer cache, DBWR
free buffer waits Buffer cache, DBWR, I/O
db file scattered read I/O, sentencias SQL

redPartner
db file sequential read
enqueue waits (empiezan
con enq:)
library cache latch waits:
library cache, librarycache
pin y library cachelock
I/O, sentencias SQL

Locks

Latch contention
log buffer space Log buffer, I/O
log file sync I/O, over- committing

15
Perfil de ejecucin

Top 5 Timed Events


~~~~~~~~~~~~~~~~~~ % Total
Event Waits Time (s) Ela Time

redPartner
-------------------------------------------- ------------ ----------- --------
CPU time 37,297 52.27
SQL*Net message from dblink 7,065,802 11,312 15.85
async disk IO 943,852 5,265 7.38
db file sequential read 13,042,432 3,493 4.90
direct path write 108,862 3,410 4.78
-------------------------------------------------------------

16
Por qu a un desarrollador le
importan stos eventos ?

1. Se necesita saber en dnde est

redPartner
pasando el tiempo mi cdigo
2. La escalabilidad es importante

17
Top 10 Wait Events

1. Estos son los que hay que conocer


2. Los otros 260 o ms se pueden investigar
3. Se debe saber que los causa

redPartner
4. Debemos saber que valores son aceptables
5. Entender lo que se requiere para arreglarlos

select name, parameter1, parameter2,


parameter3
from v$event_name
where name like nvl('&event_name',name)
order by name

18
CPU
No es un evento de espera pero aparece en muchos reportes
Tiempo utlilizado en uso de CPU
Debe aparecer de primero en los reportes de anlisis de performance

redPartner
19
db File Sequential Read

Este evento significa que un proceso de usuario esta leyendo un


buffer del buffer cache en el SGA y esta esperando al subsistema de
I/O.
Son lecturas de bloque a bloque, generalmente producidas por

redPartner

accesos va ndices.
Valor razonable: <10ms

20
db File Scattered Read

Esperas por llamadas de I/O cuando el proceso de usuario carga


datos al buffer cache.

redPartner
Este evento identifica cundo sucede un table scan.
Valor razonable: <10ms

21
direct path Read/Write

Cuando se lee directamente desde disco hacia la PGA


Puede deberse a Parallel query
O a escrituras con Insert append

redPartner
Valor razonable: <20ms

22
Log File Sync

Evento que se produce cuando un proceso espera mientras los datos


se escriben en los redo log files despus de un commit o rollback.
Valores razonables: <4ms

redPartner
23
Buffer Busy Waits

Este evento se da cuando una sesin quiere acceder a un bloque en el


buffer cache y debe esperar a que otro proceso lo libere.
Los buffers puede ser de tipo data block, segment header, undo header

redPartner
y undo block

24
Free Buffer Waits

Este evento indica por lo general que existen dirty buffers que no han
sido liberados por el DBWR y los procesos no encuentran bloques
libres.

redPartner
El DBWR puede no escribir lo suficientemente rpido a disco segn el
requerimiento del sistema y la arquitectura presente.

25
SQL*Net message from client

La base de datos est idle esperando la siguiente solicitud


del cliente
Valores razonables: <2ms

redPartner
Cmo arreglarlo
Afinar el app server
Reducir el nmero de llamadas
Call network guy
Que los usuarios escriban ms rpido

26
Esperas en Library Cache

library cache lock


library cache pin

redPartner
27
Library Cache Pin

Indica que hay contencin en el library cache.


Normalmente se presenta cuando se estan recompilando o haciendo
parse de objetos PL/SQL o una vista.

redPartner
28
Library Cache Lock

Este evento controla la concurrencia entre clientes del


library cache.
Se crea un bloqueo en el objeto para:

redPartner
Evitar que otros clientes accedan al mismo objeto
mientras ste se modifica.

29