You are on page 1of 16

Luis Vinuesa

Monitorizacin y
Optimizacin del rendimiento

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Plan de ejecucin

Necesario tener una tabla del estilo


plan_table (disponible en utlxplan.sql)
EXPLAIN PLAN [SET STATEMENT_ID=id]
[INTO tabla]
FOR sentencia

Para consultarlo se puede hacer algo


como (utlxpls.sql)

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Plan de ejecucin

Algunas de las posibles salidas son:

FILTER: Elimina filas de la tabla como resultado de la clusula WHERE


INDEX RANGE SCAN: Accede a los datos de una tabla a travs de un ndice
INDEX UNIQUE: Accede a los datos de una tabla a travs de un ndice nico
SORT GROUP BY: Ordena los datos segn se especifica en la clusula
GROUP BY
SORT ORDER BY: Ordena los datos segn se especifica en la clusula
ORDER BY
SORT UNIQUE: Ordena los datos y elimina las filas duplicadas
TABLE ACCESS FULL: Busca en toda la tabla para devolver los datos
requeridos
TABLE ACCESS BY ROWID: Recupera una fila basndose en el ROWID de la
tabla
TABLE ACCESS BY USER ROWID: En este caso es el usuario el que
proporciona el ROWID por el que hay que buscar
VIEW: Recupera la informacin de una vista

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Optimizacin

En Oracle (desde la versin 8) hay dos


formas de optimizacin

Basada en reglas (se soporta por


compatibilidad con versiones anteriores)
Basada en costes (CBO)

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Optimizacin

Se puede seleccionar el modo:

En la instancia:
optimizer_mode={choose|rule|first_rows|fi
rst_rows_n|all_rows}
En la sesin (alter session set
optimizer_mode)
En cada sentencia: mediante el uso de
hints

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Optimizacin

Optimizer_mode

Choose: valor por defecto. Elige basado en costes


si hay estadsticas y si no las hay basado en reglas
Rule: basado en reglas
First_rows: basado en costes, minimiza el tiempo
de respuesta
first_rows_n (n=1,10,100,100). Basado en costes,
minimiza el tiempo de respuesta para las primeras
n filas
all_rows: basado en costes, minimiza el tiempo
total de ejecucin

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Optimizacin

Mediante el uso de hints podemos indicarle a


Oracle como queremos que se ejecute una
sentencia. Hay de varios tipos

Hints de objetivos. ALL_ROWS, FIRST_ROWS(n),


CHOOSE, RULE
Hints de path de acceso: FULL, ROWID, HASH,
INDEX, NO INDEX..
.

Sintxis

{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] */


{DELETE|INSERT|SELECT|UPDATE} --+ hint [text]

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Optimizacin

Optimizacin basada en costes.


Generacin de estadsticas:

Analize (obsoleto)
DBMS_STATS

DBMS_STATS.GATHER_TABLE_STATS(esquem
a,tabla)

DBMS_UTILITY

DBMS_UTILITY.ANALIZE_SCHEMA(esquema,m
odo) siendo modo COMPUTE|ESTIMATE-

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Optimizacin

Los resultados de generar estadistcas


CBO se pueden ver en:

Dba_tables
Dba_tab_col_statistics
Dba_indexes
Dba_part_col_statistics

Administracin de Sistemas de Gestin de Bases de Datos

Luis Vinuesa

Filas encadenadas

Filas que estn en ms de un bloque.


Debe existir una tabla donde guardar el
resultado (utlchain.sql)

Analize table nombre list chained rows into


filas_encadenadas;

Administracin de Sistemas de Gestin de Bases de Datos

10

Luis Vinuesa

Utilizacin de ndices

Para comprobar si un ndice se est


utilizando o no

Alter index nombre monitoring usage;


Alter index nombre nomonitoring usage;

Los resultados los podemos ver en


V$OBJECT_USAGE

Administracin de Sistemas de Gestin de Bases de Datos

11

Luis Vinuesa

Estadsticas del sistema

En V$STATNAME se explican todas las


estadsticas
En V$SYSSTAT se muestran todas las
estadsticas calculadas (acumuladas
desde que se arranc la instancia)
EN V$SGASTAT se muestran todas las
estadsticas calculadas (acumuladas
desde que arranc la instancia)

Administracin de Sistemas de Gestin de Bases de Datos

12

Luis Vinuesa

Estadsticas del sistema

EN V$EVENT_NAME se catalogan todos los


tipos de eventos de espera
En V$SYSTEM_EVENT se muestran los totales
acumulados para todas las sesiones de
esperas por cada evento desde que se
arranc la instancia
En V$SESSION_WAIT se muestran todos los
recursos o eventos por los que las sesiones
activas estn esperando

Administracin de Sistemas de Gestin de Bases de Datos

13

Luis Vinuesa

Estadsticas de sesin

Para ver la informacin de la sesin actual se


puede consultar V$MYSTAT. La informacin
est acumulada desde el comienzo de la
sesin.
V$SESSTAT muestra todas las estadsticas
acumuladas a nivel de sesin (para cada
sesin)
V$SESSION_EVENT se muestran los totales
acumulados para la sesin

Administracin de Sistemas de Gestin de Bases de Datos

14

Luis Vinuesa

STATSPACK

Ejecutar SPCREATE.SQL
c:\oracle\ora92\rdbms\admin- (necesario al menos
100MB de espacio) (conectado AS SYSDBA)
TIMED_STATISTICS=TRUE (antes de recopilar
estadsticas)
Para recopilar estadsticas hay que ejecutar el
procedimiento STATSPACK.SNAP
Para generar un informe se ejecuta SPREPORT.SQL
Para desinstalar se ejecuta SPDROP.SQL (conectado
AS SYSDBA)

Administracin de Sistemas de Gestin de Bases de Datos

15

Luis Vinuesa

STATSPACK

Parmetros (estn en la tabla


stat$statspack_parameter)

i_snap_level

0estadisticas de rendimiento generales sobre


memoria, bloqueos, reas y sucesos
5lo anterior ms las instrucciones SQL que ms
recursos demandan
10lo anterior ms los datos de bloqueos internos
padre/hijo

i_session_ididentificador de la sesin para la


que queremos generar datos

Administracin de Sistemas de Gestin de Bases de Datos

16

You might also like