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