Escolar Documentos
Profissional Documentos
Cultura Documentos
RENDIMIENTO
CONTENIDO
INTRODUCCION
Porque
se afina un Sistema ?
Quien afina ?
Cuando se afina ?
CAUSAS DE PROBLEMAS DE
PERFORMANCE
Problemas
CONTENIDO
CONTENIDO
AFINANDO SQL
Estndares de SQL
Utilizar bind-variables
Utilizar alias
El Optimizador de SQL
Afinamiento de SQL
Sentido comn en SQL
HERRAMIENTAS DE DIAGNSTICO
CONTENIDO
METODOLOGIA DE AFINAMIENTO
Inspeccin Inicial
Anlisis
Acciones Correctivas
Presentacin de Resultados
INTRODUCCION
Beneficios Humanos
Quin afina ?
INTRODUCCION
Cuando se afina ?
25
25
20
20
15
Beneficio
Costo
Produccin
10
5
Desarrollo
Diseo
Diseo
15
Desarrollo
10
Produccin
5
0
4
Tiempo
4
Tiempo
Causas de Problemas de
Performance
Causas de Problemas de
Performance
Causas de Problemas de
Performance
Causas de Problemas de
Performance
Memoria
Entrada/Salida en discos y controladores
CPU
Redes
Causas de Problemas de
Performance
el Modelo de Datos
Desnormalizando
ndices :
Afinando ndices :
Afinando ndices :
Afinando ndices :
Constraints:
Triggers:
Esta es otra buena opcin para el diseo de de
aplicaciones, estos son usados a menudo para
registros de auditora. Los triggers a nivel de tupla
han sido conocidos como la causa de severas
degradaciones de performance cuando son utilizados
inapropiadamente, es importante que mantenga el
cdigo de sus triggers simples, tenga cuidado de
triggers que realizan actualizaciones en otras tablas
que tambin contienen triggers.
Afinando SQL
Afinando SQL
Afinando SQL
Consejos para afinar el SQL:
Cuando varios programadores estn desarrollando una aplicacin
cada uno tiene su propio estilo, preferencias y tendencias, aun
cuando cada uno esta produciendo un cdigo eficaz, su futuro
mantenimiento puede darle un verdadero dolor de cabeza.
A menudo cuando no se aplican normas en la codificacin significa
que solo la persona que escribi el cdigo lo puede entender.
Antes de iniciar a codificar una aplicacin es importante definir
un estndar de programacin.
Afinando SQL
Consejos para afinar el SQL:
Usar Alias :
El uso de alias en las tablas y la inclusin de los prefijos en todos
los nombres de columnas cuando ms de una tabla es
consultada reducir el tiempo de anlisis de sintaxis y previene
errores.
Considerando el siguiente ejemplo:
SELECT
FROM
WHERE
Afinando SQL
Consejos para afinar el SQL:
Utilizar bind variables :
Se aprovecha mejor el shared area si se utilizan bind variables.
Ya que no es lo mismo:
(Non-Sharable SQL)
SELECT * FROM emp WHERE emp_no = 123;
SELECT * FROM emp WHERE emp_no = 987;
(Sharable SQL)
SELECT * FROM emp WHERE emp_no = :B1; (Bind value:123)
SELECT * FROM emp WHERE emp_no = :B1; (Binde value:987);
El Optimizador de SQL
El optimizador de Oracle es un recurso del sistema que est
escondido pero es extremadamente importante. Una parte del
kernel de Oracle, el optimizador examina cada sentencia SQL que
se encuentra en su aplicacin y escoje el plan de ejecucin
optimo, o recupera el path, para la sentencia. El plan de ejecucin
es la secuencia fsica de pasos que el RDBMS debe tomar para
realizar una operacin que usted ha especificado.
Para deducir el path de bsqueda optimo, el optimizador considera
varias reas como por ejemplo:
Rango
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Condicion
ROWID
Cluster join with unique or primary key
Hash cluster key with unique or primary key
Entire unique concatenated index
Unique indexed column
Entire cluster key
Hash cluster key
Entire cluster key
Entire non-UNIQUE concatenated index
Non-UNIQUE index merge
Entire concatenated index
Most leading columns of concatenated index
indexed column BETWEEN low value an high value or indexed column LIKE
"ABC%" (Bounded range)
Non-UNIQUE indexed column between low value and high value or indexed
column like 'ABC%' (Bounded range)
UNIQUE indexed column o constant (Unbounded range)
Non-UNIQUE indexed column or constant (unbounded range)
Equality on nonindexed
MAX or MIN of single indexed columns
ORDER BY entire index
Full table scans
= Constant
= Constant
= Constant
= Constant
= Constant
=Corresponding cluster key of other
table in the same cluster
= Constant
= Constant
= Constant
=lower bound
= Constant
TABLA PIVOTE
Join de dos tablas:
0.96 Segundos
26.09 Segundos
TABLA INTERSECCIN
Join de tres tablas:
SELECT ...........
FROM
location L,
category C,
emp E
WHERE
E.emp_no BETWEEN 1000 AND 2000
AND
E.cat_no = C.cat_no
AND
E.locn
= L.locn
Es mas eficiente de la siguiente manera :
SELECT ..........
FROM
emp E,
location L,
catecory C
WHERE
E.cat_no = C.cat_no
AND
E.locn
= L.locn
AND
E.emp_no BETWEEN 1000 AND 2000
Competencia de ndices
FULL
USE_CONCAT
HASH
ORDERED
INDEX
USE_NL
INDEX_ASC
USE_MERGE
INDEX_DESC
CACHE
AND_EQUAL
NO_CACHE
PARALEL
NOPARALEL
Con tablas
Con ndices
Afinando SQL
Consejos para afinar el SQL:
Uso eficiente de la clusula WHERE:
SELECT
FROM
WHERE
AND
AND
........
emp E
emp_salary > 50000
emp_type = MANAGER
25 < ( SELECT
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
Es mejor
SELECT
FROM
WHERE
AND
AND
........
emp E
25 < ( SELECT
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
emp_salary > 50000
emp_type = MANAGER
Afinando SQL
Consejos para afinar el SQL:
Uso eficiente de la clusula WHERE:
USANDO ANDS SIN COMPETENCIA DE INDICES
SELECT
FROM
WHERE
OR
........
emp E
25 < ( SELECT
FROM
WHERE
(emp_salary > 50000
COUNT(*)
emp
emp_mgr = E.emp_no)
AND
emp_type = MANAGER)
Es mejor
SELECT
FROM
WHERE
AND
OR
........
emp E
(emp_salary > 50000
emp_type = MANAGER)
25 < ( SELECT
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
Afinando SQL
Afinando SQL
Uso de ROWID
SELECT ROWID
INTO
:emp_rowid
FROM emp
WHERE emp.emp_no = 5643
FOR UPDATE;
.
.
.
UPDATE
SET
WHERE
emp
emp.name = ........
ROWID = :emp_rowid;
Afinando SQL
METODO 1
SELECT
FROM
WHERE
emp_name,salary,grade
emp
empno = 123;
SELECT
FROM
WHERE
emp_name,salary,grade
emp
empno = 567;
METODO 3
SELECT
FROM
WHERE
AND
A.emp_name,A.salary,A.grade,
B.emp_name,B.salary,B.grade
emp A, emp B
A.emp_no = 123
B.emp_no = 567;
METODO 2
DECLARE CURSOR C1 (E_no NUMBER) IS
SELECT
emp_name,salary,grade
FROM
emp
WHERE
empno = E_no;
BEGIN
OPEN C1(123);
FETCH C1 INTO .........;
CLOSE C1;
OPEN C1(567);
FETCH C1 INTO .........;
CLOSE C1;
END;
Afinando SQL
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
AND
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
SELECT
FROM
WHERE
Afinando SQL
Afinando SQL
Herramientas de Diagnstico
Herramientas de Diagnstico
ANALIZE
EXPLAIN
PLAN
SQL_TRACE
TKPROF
Herramientas de Diagnstico
ANALIZE
Los objetos de la base de datos necesitan ser
analizados para tener estadsticas disponibles
para el optimizador basado en costos.
La sintaxis de la sentencia para analizar es la
siguiente:
ANALYZE
TABLE XXX COMPUTE STATISTICS
INDEX
ESTIMATE STATISTICS
Herramientas de Diagnstico
EXPLAIN PLAN
El comando EXPLAIN PLAN despliega el plan de
ejecucin escogido por el optimizador de
ORACLE para las clusulas SELECT, UPDATE,
INSERT Y DELETE. El plan de ejecucin es la
sentencia de operaciones que ORACLE realiza
para ejecutar las sentencias. Examinando el plan
de ejecucin usted puede ver como ORACLE
ejecuta sus sentencias SQL.
Antes de ejecutar el EXPLAIN PLAN, debe existir
una tabla de salida llamada PLAN_TABLE.
Usted debe correr el archivo ULTXPLAN.SQL
para crear esta tabla.
Herramientas de Diagnstico
Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION
AND EQUAL
OPCION
CONNECT BY
CONCATENATION
COUNT
STOPKEY
FILTER
FIRST ROW
DESCRIPCION
Una operacin que acepta multiples sets de ROWID y regresa
la interseccin de los sets, eliminando duplicados.
Un retorno de filas en un orden jerrquico para una consulta
que contenga una clusula CONNECT BY
Una operacin que acepta mltiples sets de filas y regresa la
unin, todos los sets.
Una operacin que cuenta el Nmero de filas seleccionadas de
la tabla.
Una operacin que cuenta donde el nmero de filas retornadas
es limitado por la expresin ROWNUM en la clusula
WHERE.
Una operacin que acepta un set de filas, elimina algunas de
ellas, y regresa el resto.
Un retorno de slo la primera fila seleccionada por el query.
Herramientas de Diagnstico
Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION
FOR UPDATE
INDEX
OPCION
UNIQUE SCAN
RANGE SCAN
RANGE SCAN
DESCENDING
INTERSECTION
MERGE JOIN+
OUTER
CONNECT BY
MINUS
DESCRIPCION
Una operacin que devuelve y busca las filas seleccionadas
por el query que contiene una clusula FOR UPDATE
Un retorno de un simple ROWID de un ndice
Un retorno de una o ms ROWIDs de un ndice. Valores
indexados son buscados en orden ascendente
Un retorno de una o ms ROWIDs de un ndice. Valores
indexados son buscados en orden descendente
Una operacin que acepta dos sets de filas y regresa la
interseccin de los sets, eliminando duplicados
Una operacin que acepta dos sets de filas, cada una ordenada
por el valor especfico, combina cada fila de un set con la fila
correspondiente del otro, y regresa el resultado.
Una operacin de merge join para ejecutar una sentencia outer
join.
Un retorno de fila en un orden jerrquico por un query que
contenga una clusula CONNECT BY.
Herramientas de Diagnstico
Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION
NESTED LOOPS+
OPCION
NESTED LOOPS+
PROJECTION
REMOTE
SEQUENCE
OUTER
SORT
AGGREGATE
UNIQUE
GROUP BY
JOIN
ORDER BY
DESCRIPCION
Una operacin que acepta dos sets de filas, un set de salida y
un set de entrada. Oracle compara cada fila del set de salida
con cada fila del set de entrada y regresa aquellas filas que
satisfacen una condicin.
Un operacin LOOP para ejecutar una sentencia outer join
Una operacin interna
Un retorno de datos de una base de datos remota
Una operacin que involucra acceso a valores de una
secuencia
Un retorno de una simple fila que es el resultado de aplicar
una funcin de grupo a un grupo de filas seleccionadas
Una operacin que ordena un set de filas para eliminar
duplicados
Una operacin que ordena un set de filas en grupos para una
consulta con una clusula GROUP BY
Una operacin que ordena un set de filas antes de una
operacin merge join
Una operacin que ordena un set de filas para un query con
una clusula OREDER BY
Herramientas de Diagnstico
Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION
TABLE ACCESS*
OPCION
FULL
CLUSTER
HASH
BY ROWID
UNION
VIEW
DESCRIPCION
Un retorno de todas las filas de una tabla
Un retorno de filas de una tabla basada en un valor de la clave
del cluster indexado
Un retorno de filas de uana tabla basada en un valor de la
clave del hash cluster
Un retorno de una fila de una basada en sus ROWID
Una operacin que acepta dos sets de filas y regresa la unin
de los sets, eliminando duplicados
Una operacin que ejecuta una consulta a una vista y entonces
retorna las filas resultantes de otra operacin
Herramientas de Diagnstico
EXPLAIN PLAN
Formato anidado para la salida del EXPLAIN PLAN:
Accept a1
SELECT LPAD(,2*(LEVEL-1))||operation||||
options||||object_name||||DECODE(id,0,Cost=||position) Query Plan
FROM
plan_table
START WITH id=0
AND statement_id like &a1
CONNECT BY PRIOR id = parent_id AND statement_id like &a1;
Herramientas de Diagnstico
SQL_TRACE
Utilidad que escribe un archivo de rastro conteniendo estadsticas de
performance.
SQL_TRACE
USER_DUMP_DEST
TIMED_STATISTICS
MAX_DUMP_FILE_SIZE
TRUE
Directorio
TRUE
number
Herramientas de Diagnstico
TKPROF
Utilidad que traslada a informacin legible el archivo generado por
SQL_TRACE, mostrando tambin el plan de ejecucin de la
sentencia.
TKPROF tracefile listfile [SORT = parameters]
[EXPLAIN = usr/pass]
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
La Metodologa de afinamiento de un sistema se basar en los
siguientes cuatro pasos:
1.
2.
3.
4.
Identificacin de problemas
Anlisis
Acciones Correctivas
Presentacin de Resultados
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Identificacin de problemas
Es necesario identificar los problemas y cuantificarlos para tener
una referencia inicial sobre el estado actual del sistema,
para esto se usan los denominados diagramas de Pareto en
los cuales se ve de manera grfica cuales son los
problemas que son mas frecuentes o puntos crticos en el
sistema y que pueden ser la causa del bajo desempeo,
como resultado se deber saber cual es el estado actual del
sistema.
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Identificacin de problemas
Para esta tarea se debern seguir los siguientes pasos :
Identificar posibles problemas
1.
2.
3.
4.
Fragmentacin
Mala utilizacin del espacio ocupado
Uso inadecuado de memoria
Aplicaciones (SQL) crticas
Accesos sin ndices
Uso inadecuado de la integridad referencial (locks o full-Scans)
METODOLOGIA DE
AFINAMIENTO DE SISTEMAS
Anlisis
El resultado de un proceso puede atribuirse a una multitud de factores,
y es posible encontrar la relacin causa-efecto de esos factores.
Podemos determinar la estructura de una relacin mltiple de causaefecto observndola sistemticamente. Es difcil solucionar problemas
complicados sin tener en cuenta esta estructura, la cual consta de una
cadena de causas y efectos, y el mtodo para expresar esto en forma
sencilla y fcil es un diagrama de causa-efecto. El resultado final del
anlisis ser un documento de conclusiones del sistema y un
cronograma de actividades que se debern seguir para afinar el
sistema. Se debern seguir los siguientes pasos:
- Identificacin de causas y efectos
- Priorizar tareas
- Conclusiones y Recomendaciones
- Elaborar Cronograma
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Anlisis: Identificacin de causas y efectos
Se buscan todas las causas posibles que puedan afectar a las
caractersticas de rendimiento del sistema. Como base se
han identificado de manera general un grupo de causas que
hacen reflejar un bajo rendimiento en un sistema, sin
embargo se podr conocer con mayor detalle otra lista de
causas al analizar el sistema con mayor profundidad.
Diagrama
Causa-efecto
Uso inadecuado de memoria
Tamao de bloques de
memoria
Indices Tablas
Datafiles
Tamao de
bloques de datos
Fragmentacin
Distribucin de
datos
Tamao
del SGA
Diccionario de
datos
Pagineo
Normalizacin/
Denomarlizacin
Bajo
rendimiento en
un sistema
Por integridad
referencial
Indices
Bind variables
Consideraciones
de acceso
concurrente
Mal uso de
clusters
Bloqueos
Acceso
redundantes
Compartido
Tabla pivote
Mal uso del
optimizador
No uso de indices
Hints
Diseo
Programacin
Alias
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Anlisis: Priorizar tareas
Una vez completa la informacin sobre las causas y efectos
el paso siguiente es asignar la importancia de cada factor.
Todos los factores no se relacionan necesariamente en
forma estrecha con la caracterstica, de manera que se
marcarn esos factores que parecen tener un efecto
particularmente significativo sobre la caracterstica y se les
asignar la prioridad correspondiente.
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Anlisis: Conclusiones y Recomendaciones
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Anlisis: Elaborar Cronograma
Se detallarn todas las actividades en orden de mas alta prioridad
a la ms baja, especificando la fecha de inicio y finalizacin
de cada una.
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Acciones correctivas
Se ejecutarn todas las actividades detalladas en el cronograma,
acompaadas de su respectiva documentacin donde se
explicarn las tcnicas utilizadas para su correccin.
Adems se recabar toda la informacin del desempeo de
cada factor identificado con anterioridad (Punto 1) como
problema
METODOLOGIA DE AFINAMIENTO
DE SISTEMAS
Presentacin de Resultados
Basndose en los datos y el diagrama inicial se elaborar un
nuevo diagrama de Pareto para su comparacin donde se
observarn el impacto de las mejoras implementadas.
REFERENCIAS
Oracle
Edicin
Gurry&Corrigan, Editorial OReilly
Oracle
Performance Tuning
Tips&Techniques
Richard J. Niemiec Editoral Osborne McGraw Hill
Presentacin