Professional Documents
Culture Documents
CONTENIDO
INTRODUCCION
Porque
se afina un Sistema ?
Quien
afina ?
Cuando se afina ?
con CPU
Problemas de la red
CONTENIDO
Afinando ndices
Constraints
Triggers
Performance de Querys
Parallel Query
CONTENIDO
AFINANDO SQL
Estndares de SQL
Utilizar bind-variables
Utilizar alias
El Optimizador de SQL
Afinamiento de SQL
HERRAMIENTAS DE DIAGNSTICO
CONTENIDO
METODOLOGIA DE AFINAMIENTO
Inspeccin Inicial
Elaborar diagramas
Resumen
Anlisis
Priorizar tareas
Conclusiones y Recomendaciones
Elaborar Cronogramas
Acciones Correctivas
Presentacin de Resultados
INTRODUCCION
Beneficios Humanos
Quin afina ?
El diseador debe comunicar el diseo del sistema para que cualquier persona
pueda entender el flujo de datos en una aplicacin.
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
Memoria
CPU
Redes
el Modelo de Datos
Desnormalizando
Hace
Sacrifica
Mejora
flexibilidad
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.
Query Performance
Parallel Query
La creacin de ndices.
La consulta de datos
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
company C,
Emp E
WHERE
E.comp_code = C.Comp_Code
WHERE
E.comp_code = C.comp_code
Afinando SQL
Consejos para afinar el SQL:
(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:
Las tablas de la base de datos que su sentencia necesitar accesar
Alguna condicin que deben satisfacer los datos (la clusula
WHERE)
La localizacin fsica de la tabla (SQL distribuido)
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:
registro
0.96 Segundos
26.09 Segundos
TABLA INTERSECCIN
Join de tres tablas:
SELECT
...........
FROM
location L,
category C,
emp E
WHERE
AND
E.cat_no = C.cat_no
AND
E.locn
= L.locn
..........
FROM
emp E,
location L,
catecory C
WHERE
E.cat_no
C.cat_no
AND
E.locn
L.locn
AND
Competencia de ndices
!=, <>
NOT IN
NOT EXISTS
UPDATE
DELETE
FULL
USE_CONCAT
HASH
ORDERED
INDEX
USE_NL
INDEX_ASC
USE_MERGE
INDEX_DESC
CACHE
AND_EQUAL
NO_CACHE
PARALEL
NOPARALEL
Inconsistencia
Con tablas
Con ndices
Afinando SQL
Consejos para afinar el SQL:
Uso eficiente de la clusula WHERE:
SELECT
FROM
........
emp E
emp_type = MANAGER
AND
25 < ( SELECT
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
Es mejor
SELECT
FROM
........
emp E
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
AND
AND
emp_type = MANAGER
Afinando SQL
Consejos para afinar el SQL:
Uso eficiente de la clusula WHERE:
USANDO ANDS SIN COMPETENCIA DE INDICES
SELECT
........
FROM emp E
WHERE 25 < ( SELECT
OR
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
emp_type = MANAGER)
Es mejor
SELECT
........
FROM emp E
WHERE (emp_salary > 50000
AND
emp_type = MANAGER)
OR
25 < ( SELECT
COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
Afinando SQL
emp E
WHERE
25 < (
OR
SELECT COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
AND
emp_type = MANAGER)
Es mejor
SELECT ....
FROM
emp E
WHERE
AND
emp_type = MANAGER)
OR
25 < (
SELECT COUNT(*)
FROM
emp
WHERE
emp_mgr = E.emp_no)
Afinando SQL
Uso de ROWID
SELECT ROWID
INTO
:emp_rowid
FROM
emp
UPDATE emp
SET
WHERE
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
Deshabilitar ndices
SELECT
FROM
WHERE
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
emp_history H
GROUP
BY H.emp_no, H.Hist_Type;
Afinando SQL
Joins
en lugar de EXISTS
EXISTS
en lugar de JOINS
EXISTS
en lugar de DISTINCT
NO
IN
o UNION en lugar de OR
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.
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
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.
Identificacin de problemas
2.
Anlisis
3.
Acciones Correctivas
4.
Presentacin de Resultados
METODOLOGIA DE AFINAMIENTO DE
SISTEMAS
Identificacin de problemas
METODOLOGIA DE AFINAMIENTO DE
SISTEMAS
Identificacin de problemas
Para esta tarea se debern seguir los siguientes pasos :
Identificar posibles problemas
1.
Fragmentacin
2.
3.
4.
Resumen.
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 causa-efecto 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
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
METODOLOGIA DE AFINAMIENTO DE
SISTEMAS
Anlisis: Conclusiones y Recomendaciones
METODOLOGIA DE AFINAMIENTO DE
SISTEMAS
Anlisis: Elaborar Cronograma
METODOLOGIA DE AFINAMIENTO DE
SISTEMAS
Acciones correctivas
METODOLOGIA DE AFINAMIENTO DE
SISTEMAS
Presentacin de Resultados
REFERENCIAS
Oracle
Performance Tuning,
Segunda Edicin
Oracle
Performance Tuning
Tips&Techniques
Presentacin
compartida por
Blanco Silva Consultores.