You are on page 1of 69

OPTIMIZACION Y ALTO

RENDIMIENTO

Curso Manejo e Implementacin de Archivos


Cat. Ing. Alvaro Daz A. (Secc. A-)
Cat. Ing. Oscar Paz (Secc. A+)
Universidad de San Carlos de Guatemala
Primer Semestre 2015

CONTENIDO

INTRODUCCION
Porque

se afina un Sistema ?
Quien afina ?
Cuando se afina ?

CAUSAS DE PROBLEMAS DE
PERFORMANCE
Problemas

con el diseo y desarrollo


Problemas con Recursos
Problemas con I/O de disco
Problemas con CPU
Problemas de la red

CONTENIDO

DISEANDO PARA UN MEJOR PERFORMANCE

Afinando el modelo de datos


Afinando ndices
Desnormalizando una Base de Datos
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
Sentido comn en SQL

HERRAMIENTAS DE DIAGNSTICO

CONTENIDO

METODOLOGIA DE AFINAMIENTO

Inspeccin Inicial

Anlisis

Identificar posibles problemas


Recolectar informacin mediante mediciones
Elaborar diagramas
Resumen
Identificacin de causas y efectos
Priorizar tareas
Conclusiones y Recomendaciones
Elaborar Cronogramas

Acciones Correctivas
Presentacin de Resultados

INTRODUCCION

Porqu se afina un Sistema ?

Beneficios econmicos para la Empresa

Beneficios Humanos

Evita incurrir en costos adicionales de equipo.


Con un adecuado afinamiento se obtiene un mejor performance.
Al disminuir el equipo utilizado se disminuyen tambin los costos de
mantenimiento tanto de software como hardware.
Incrementa la productividad, a la vez que satisface a los clientes de la
organizacin

Quin afina ?

El diseador debe comunicar el diseo del sistema para que cualquier


persona pueda entender el flujo de datos en una aplicacin.
Los desarrolladores de aplicacin deben comunicar las estrategias de
implementacin que escogen y aquellos mdulos y sentencias SQL pueden
ser rpida y fcilmente identificadas durante la tarea de afinamiento.
El administrador de la base de datos debe monitorear y documentar las
actividades del sistema cuidadosamente y aquellos rendimientos inusuales
del sistema que pueden ser identificados y corregidos.
Los administradores de hardware y software deben documentar y
comunicar las configuraciones del hardware y software del sistema para
que cualquiera pueda disear y administrar sistemas efectivamente.

INTRODUCCION

Cuando se afina ?

El tiempo mas efectivo que se tiene para afinar es durante la fase


de diseo, obteniendo los mximos beneficios al menor costo.
Esto podemos observarlo en las siguientes figuras:

Beneficio Vrs. Tiempo

25

25

20

20

15

Beneficio

Costo

Costo Vrs. Tiempo

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

Problemas con el diseo y desarrollo

Diseo: Los problemas en el diseo son causados por diseadores que no


consideran los puntos siguientes:

Performance considerado cuando se selecciona una arquitectura


Performance considerado cuando se crea el modelo de datos
Programas diseados adecuados para una base de datos relacional
Programas diseados adecuados para la configuracin de hardware usada.

Programas: Los principales problemas son :

Inapropiado uso de ndices


Uso incorrecto del optimizador
Uso incorrecto de la opcin procedural

Causas de Problemas de
Performance

Problemas con el diseo y desarrollo

Base de Datos: Estos problemas son principalmente causados por DBAS


que no consideran los siguientes puntos:

Uso efectivo de los recursos de la mquina.


Uso efectivo de la memoria.
Configurar los parmetros de INIT.ORA para evitar contencin de redo logs y
otros objetos.

Sistemas : Algunos problemas ocurren como resultado de:

Otros sistemas que afecten al DBMS.


Un sistema operativo no afinado.
La configuracin o tamao de la mquina que es inadecuada para soportar el
DBMS.

Causas de Problemas de
Performance

Problemas con Recursos del Sistema


Para obtener un mejor performance usted debe conocer cuatro componentes
del ambiente de mquina que interactan y afectan el performance del
sistema, stos componentes son :

Memoria
Entrada/Salida en discos y controladores
CPU
Redes

Causas de Problemas de
Performance

Problemas con I/O de disco


La carga del disco debe ser distribuida eficientemente. Por ejemplo,
cuando las tablas, ndices y rollback son creados son asignados a una
localidad inicial. Si esta localidad es excedida, Oracle debe asignar
extensiones adicionales. El acceso a los datos es ms eficiente si las
extensiones son contiguas e independientes segn el tipo de segmento.

Problemas con CPU


Los problemas de la CPU frecuentemente ocurren cuando muchos
procesos estn tratando de usar la CPU al mismo tiempo.

Problemas con la Red


Los cuellos de botella en la red ocurren cuando la cantidad de datos que
necesitan ser transferidos a travs de la red exceden la capacidad
de la misma.

Diseando para un mejor


Performance

Diseando para un mejor


performance
Afinando

el Modelo de Datos

Desnormalizando

una Base de Datos

Hace la codificacin mas compleja


Sacrifica flexibilidad
Mejora el tiempo para obtener datos (select) pero
desmejora el tiempo de la actualizacin de datos
(update, delete, insert o tambin llamados operaciones
ABC-altas, bajas y cambios-)

Diseando para un mejor


performance

Afinando ndices : Hay una serie de preguntas


que deben ser respondidas antes de asignar ndices:

Debo indexar la llave primaria de una tabla ?


Debo indexar la llave fornea de una tabla ?
Necesito otros ndices ?
Como puedo reforzar el uso de ndices ?

Diseando para un mejor


performance
Afinando
Debo

ndices :

indexar la llave primaria de una tabla ?

Es nica la llave primara ?


Los ndices refuerzan la unicidad.

Si es as defina un ndice (usualmente)


Pero si el volumen esperado de la tabla es menor de 250
registros y las columnas no son usadas dentro de los
estatutos de un join de SQL, no defina ndice.

Diseando para un mejor


performance

Afinando ndices :

Debo indexar la llave fornea de una tabla ?

Es la llave fornea usada para chequear la integridad


referencial ?
Es la llave fornea usualmente parte de una clausula Where ?

Si es as defina un ndice, si no, no lo defina.

Diseando para un mejor


performance

Afinando ndices :

Necesito otros ndices ?

Si la tabla tiene miles de entradas, ndices extra podran


ayudarlo a evitar largas bsquedas en la tabla
Tome en cuenta que el exceso en el uso de ndices puede
bajar el performance en las sentencias Insert, Delete y Update.

Diseando para un mejor


performance

Afinando ndices :

Como puedo reforzar el uso de ndices ?

Coordinando el uso y definicin de ndices con el DBA, el


programador y el equipo de Control de Calidad.

Diseando para un mejor


performance
Constraints:
La integridad de los datos toma fuerza a travs del
uso de constraints, sin embargo estos tienen un
costo en performance. Oracle Corporation dice
que ste costo es similar a la ejecucin de una
sentencia SQL en la que el constraint de
integridad se traducira.
Existen algunas otras implicaciones de performance
que usted debe de ser consciente de usar en un
diseo eficaz de constraints.

Diseando para un mejor


performance

Constraints:

Primary Key Constraints: una llave primaria refuerza la


unicidad, es raro que una tabla no requiera un constraint de
llave primaria. Al agregar dicho constraint a una tabla se
crea un ndice, asegrese de proveer los detalles del
tamao al ndice en las especificaciones del diseo.
Unique Key Constraints: en ste tipo de constraints
tambin se chequea la unicidad, pero permite que las
columnas de la llave sean nulas, tambin se crea un ndice.
Foreign Key Constraints: chequea que la tabla
dependiente (hija) tenga una tupla en la tabla referenciada
(padre).
Check Constraints: son utilizados en una columna de la
tabla para especificar una condicin que debe ser cierta.
Un caso tpico es el caso en el cual una columna FLAG
tiene slo dos valores valido: ON u OFF.

Diseando para un mejor


performance

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.

Nota: Los Constraints han sido optimizados para realizar chequeos


de integridad de datos.
No use un trigger para realizar el
trabajo que puede hacer un constraint.

Diseando para un mejor


performance
Triggers:
Tome nota de las siguientes restricciones:
No se puede especificar un trigger en las tablas
del diccionario de Datos del DBMS.
Los triggers toman efecto en filas que son
modificadas en la tabla despus de que el trigger
ha sido incorporado.
Un trigger no puede leer o modificar filas en una
tabla que tiene una llave fornea apuntando a la
tabla duea del trigger.
Un trigger no puede contener sentencias
COMMIT, ROLLBACK SAVEPOINT.
Un trigger no puede ejecutar sentencias DDL, tal
como CREATE TABLE.

Diseando para un mejor


performance
Query Performance
Parallel Query

Versiones ms recientes de los ms conocidos


DBMS, introducen la opcin de Parallel Query,
lo cual puede acelerar:
La creacin de ndices.
La carga de datos en la base de datos.
La consulta de datos

Afinando SQL

Afinando SQL

Pasos estndar para la resolucin de SQL

Chequeo de sintaxis (estructura del SQL, parntesis, Etc..)

Buscar en el shared area

Buscar en el diccionario de datos (Seguridad, Privilegios, Etc..)

Calcular el path de bsqueda (Rule-based o Cost-based)

Salva el plan de ejecucin


Ejemplo: Las siguientes sentencias SQL no son iguales y no se compartirn en el
SGA
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
FROM
WHERE

NAME FROM S_CUSTOMER WHERE ID = 212;


NAME FROM S_CUSTOMER WHERE ID = 213;
NAME FROM S_CUSTOMER WHERE ID = :b1;
NAME FROM s_customer WHERE id = 212;
NAME FROM S_CUSTOMER WHERE id =212;
NAME
S_CUSTOMER
id =212;

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

E.emp_no, name, tax_no, c.comp_code, comp_name


company C,
Emp E
E.comp_code = C.Comp_Code

Es mejor utilizar los Alias como se muestra a continuacin:


SELECT
E.emp_no, E.name, E.tax_no, C.Comp_Code, C.Comp_name
FROM
Company C,
Emp E
WHERE
E.comp_code = C.comp_code

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:

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)
Optimizadores que existen:
Optimizador basado en reglas
Optimizador basado en costos

Optimizador basado en reglas


El optimizador basado en reglas utiliza un conjunto de reglas de precedencia
el cual es manejado por 20 reglas de oro las cuales instruyen al optimizador
en como determinar el path de ejecucin.

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

=column or constant (sort/merge join)

Optimizador basado en reglas

TABLA PIVOTE
Join de dos tablas:

Tabla TAB1 de 16,384 registros


Tabla TAB2 de 1
registro
TABLA TAB2 como PIVOTE
SELECT count(*) FROM TAB1, TAB2;

0.96 Segundos

TABLA TAB1 como PIVOTE


SELECT count(*) FROM TAB2, TAB1;

26.09 Segundos

Optimizador basado en reglas

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

Optimizador basado en reglas

Competencia de ndices

Preferencia por ndices nicos


Por la precedencia en las reglas, el optimizador basado en la regla
siempre va a preferir utilizar la llave nica.

Suprimiendo el uso de ndices


Para que una sentencia SQL utilice el ndice, las columnas que
pertenecen al ndice deben estar solos (sin funciones u
operaciones que lo anulen) en un lado de la comparacin en la
clusula WHERE.
Operaciones que anulan un ndice:
!=, <>
NOT IN
NOT EXISTS

Optimizador basado en Costos


Cuando utilizamos el optimizador basado en costos, podemos tunear
manualmente las sentencias SQL, pasando sobre las decisiones
del optimizador actual. Incluyendo sus propios hints dentro de la
sentencia SQL fuerza a esta sentencia a seguir el path de acceso
que usted desea en lugar del calculado por el optimizador actual.
SELECT
UPDATE
DELETE

/*+ hint */ .....


/*+ hint */ .....
/*+ hint */ .....

Algunos Hints imporantes :

ALL_ROWS : Optimiza para el mejor rendimiento de acceso a los registros


FIRST_ROWS : Siempre escoger usar un ndice sobre un full scan
CHOOSE : Fuerza el uso del optimizador basado en costos.
RULE : Fuerza el uso del optimizador basado en la regla.
FULL : Fuerza al uso de un fulll scan en la tablas.
ROWID : Fuerza a una bsqueda por ROWID en la tabla especificada

Optimizador basado en Costos


Hints (Continuacin)

FULL

USE_CONCAT

HASH

ORDERED

INDEX

USE_NL

INDEX_ASC

USE_MERGE

INDEX_DESC

CACHE

AND_EQUAL

NO_CACHE

PARALEL

NOPARALEL

Optimizador basado en Costos

Cuando los Hints son ignorados ?

Hints mal escritos


Inconsistencia

Con tablas
Con ndices

Identificacin valida de la tabla


Localizacin invalida del hint
Versiones viejas de PL/SQL (2.0)

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

USANDO ORS SIN COMPETENCIA DE INDICES


SELECT ....
FROM
emp E
WHERE 25 < (
SELECT COUNT(*)
FROM
emp
WHERE emp_mgr = E.emp_no)
OR
(emp_salary > 50000
AND
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

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

Reduciendo el nmero de viajes a la Base de Datos

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

Uso de valores null


Deshabilitar ndices
SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
substr(account_name,1,7) = CAPITAL;

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
account_name LIKE CAPITAL%;

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
amount != 0;

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
amount > 0;

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
TRUNC(trans_date) = TRUNC(SYSDATE)

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
trans_date BETWEEN TRUNC(SYSDATE)
AND TRUNC(SYSDATE)+0.99999;

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
account_name || account_type = AMEXA

SELECT
FROM
WHERE
AND

account_name, trans_date, ammount


transaction
account_name = AMEX
account_type = A

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
amount + 3000 < 5000

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
amount < 2000

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
account_name = NVL(:acc_name,account_name);

SELECT
FROM
WHERE

account_name, trans_date, ammount


transaction
account_name LIKE NVL(:acc_name,%);

Afinando SQL

Full scan via Parallel Query


CREATE TABLE XXXXX PARALLEL (DEGREE N);

SELECT /*+ FULL(H) PARALLEL(H,8) */


H.emp_no, lookup_emp(H.emp_no),
H.hist_type, lookup_hist_type(H.hist_type),
COUNT(*)
FROM
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 EXISTS en lugar de NOT IN
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.
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.

Una operacin que acepta dos sets de filas y retorna filas


que aparecen en el primer set pero no en el segundo,
eliminando duplicados

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.

Parmetros a inicializar en el init.ora con SQL_TRACE

SQL_TRACE
USER_DUMP_DEST
TIMED_STATISTICS
MAX_DUMP_FILE_SIZE

TRUE
Directorio
TRUE
number

Como habilitar el SQL_TRACE :


SQL*Plus

Alter session set SQL_TRACE TRUE;

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]

tracefile = Nombre del archivo que contiene las estadsticas generadas


Listfile = Nombre del archivo de salida del TKPROF

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)

Recolectar informacin mediante mediciones


Elaborar diagrama de Pareto
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 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

Acceso a disco (I/O)


Array size

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

Ciclos que causen


redundacia

Bloqueos por chequeo


de Integridad
Referencial sin indices

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

Se elaborar un documento donde se resumen los factores


crticos del sistema recomendndose las tcnicas posibles a
usarse que incrementen el rendimiento del sistema y el
tiempo y recursos que tomar cada mejora.

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

Performance Tuning, Segunda

Edicin
Gurry&Corrigan, Editorial OReilly

Oracle

Performance Tuning

Tips&Techniques
Richard J. Niemiec Editoral Osborne McGraw Hill

Presentacin

compartida por Blanco


Silva Consultores.

You might also like