optimizaciвn y alto rendimiento (met. de afinamiento de sistemas).pdf
TRANSCRIPT
-
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
Identificar posibles problemas
Recolectar informacin mediante mediciones
Elaborar diagramas
Resumen
Anlisis
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 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.
Beneficios Humanos 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:
Costo Vrs. Tiempo
Produccin
DesarrolloDiseo
0
5
10
15
20
25
0 2 4 6 8
Tiempo
Co
sto
Beneficio Vrs. Tiempo
Diseo
Desarrollo
Produccin
0
5
10
15
20
25
0 2 4 6 8
Tiempo
Ben
efi
cio
-
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 SistemaPara 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
-
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 RedLos 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.
Causas de Problemas de
Performance
-
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 ndices : Debo 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 deaplicaciones, estos son usados a menudo pararegistros de auditora. Los triggers a nivel de tuplahan sido conocidos como la causa de severasdegradaciones de performance cuando son utilizadosinapropiadamente, es importante que mantenga elcdigo de sus triggers simples, tenga cuidado detriggers que realizan actualizaciones en otras tablas
que tambin contienen triggers.
Nota: Los Constraints han sido optimizados para realizar chequeosde integridad de datos. No use un trigger para realizar eltrabajo 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.
-
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
Diseando para un mejor
performance
-
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 SGASELECT NAME FROM S_CUSTOMER WHERE ID = 212;
SELECT NAME FROM S_CUSTOMER WHERE ID = 213;
SELECT NAME FROM S_CUSTOMER WHERE ID = :b1;
SELECT NAME FROM s_customer WHERE id = 212;
SELECT NAME FROM S_CUSTOMER WHERE id =212;
SELECT NAME
FROM S_CUSTOMER
WHERE 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 E.emp_no, name, tax_no, c.comp_code, comp_name
FROM company C,
Emp E
WHERE 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 Condicion
1 ROWID = Constant
2 Cluster join with unique or primary key = Constant
3 Hash cluster key with unique or primary key = Constant
4 Entire unique concatenated index = Constant
5 Unique indexed column = Constant
6 Entire cluster key =Corresponding cluster key of other
table in the same cluster
7 Hash cluster key = Constant
8 Entire cluster key = Constant
9 Entire non-UNIQUE concatenated index = Constant
10 Non-UNIQUE index merge
11 Entire concatenated index =lower bound
12 Most leading columns of concatenated index = Constant
13 indexed column BETWEEN low value an high value or indexed column LIKE
"ABC%" (Bounded range)
14 Non-UNIQUE indexed column between low value and high value or indexed
column like 'ABC%' (Bounded range)
15 UNIQUE indexed column o constant (Unbounded range)
16 Non-UNIQUE indexed column or constant (unbounded range)
17 Equality on nonindexed =column or constant (sort/merge join)
18 MAX or MIN of single indexed columns
19 ORDER BY entire index
20 Full table scans
-
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 /*+ hint */ .....
UPDATE /*+ hint */ .....
DELETE /*+ 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 emp E
WHERE emp_salary > 50000
AND emp_type = MANAGER
AND 25 < ( SELECT COUNT(*)
FROM emp
WHERE emp_mgr = E.emp_no)
Es mejor
SELECT ........
FROM emp E
WHERE 25 < ( SELECT COUNT(*)
FROM emp
WHERE emp_mgr = E.emp_no)
AND emp_salary > 50000
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 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)
-
USANDO ORS SIN COMPETENCIA DE INDICESSELECT ....
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
-
Afinando SQL
Uso de ROWID
SELECT ROWID
INTO :emp_rowid
FROM emp
WHERE emp.emp_no = 5643
FOR UPDATE;
.
.
.
UPDATE emp
SET emp.name = ........
WHERE ROWID = :emp_rowid;
-
Afinando SQL
Reduciendo el nmero de viajes a la Base de Datos
METODO 1
SELECT emp_name,salary,grade
FROM emp
WHERE empno = 123;
SELECT emp_name,salary,grade
FROM emp
WHERE empno = 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;
METODO 3
SELECT A.emp_name,A.salary,A.grade,
B.emp_name,B.salary,B.grade
FROM emp A, emp B
WHERE A.emp_no = 123
AND B.emp_no = 567;
-
Afinando SQL
Uso de valores null
Deshabilitar ndices
SELECT account_name, trans_date, ammount
FROM transaction
WHERE substr(account_name,1,7) = CAPITAL;
SELECT account_name, trans_date, ammount
FROM transaction
WHERE account_name LIKE CAPITAL%;
SELECT account_name, trans_date, ammount
FROM transaction
WHERE amount != 0;
SELECT account_name, trans_date, ammount
FROM transaction
WHERE amount > 0;
SELECT account_name, trans_date, ammount
FROM transaction
WHERE TRUNC(trans_date) = TRUNC(SYSDATE)
SELECT account_name, trans_date, ammount
FROM transaction
WHERE trans_date BETWEEN TRUNC(SYSDATE)
AND TRUNC(SYSDATE)+0.99999;
SELECT account_name, trans_date, ammount
FROM transaction
WHERE account_name || account_type = AMEXA
SELECT account_name, trans_date, ammount
FROM transaction
WHERE account_name = AMEX
AND account_type = A
SELECT account_name, trans_date, ammount
FROM transaction
WHERE amount + 3000 < 5000
SELECT account_name, trans_date, ammount
FROM transaction
WHERE amount < 2000
SELECT account_name, trans_date, ammount
FROM transaction
WHERE account_name = NVL(:acc_name,account_name);
SELECT account_name, trans_date, ammount
FROM transaction
WHERE 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
ANALIZELos 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 PLANEl comando EXPLAIN PLAN despliega el plan de
ejecucin escogido por el optimizador deORACLE para las clusulas SELECT, UPDATE,INSERT Y DELETE. El plan de ejecucin es lasentencia de operaciones que ORACLE realizapara ejecutar las sentencias. Examinando el plande ejecucin usted puede ver como ORACLEejecuta sus sentencias SQL.
Antes de ejecutar el EXPLAIN PLAN, debe existiruna tabla de salida llamada PLAN_TABLE.Usted debe correr el archivo ULTXPLAN.SQLpara crear esta tabla.
-
Herramientas de Diagnstico Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION OPCION DESCRIPCION
AND EQUAL Una operacin que acepta multiples sets de ROWID y regresala interseccin de los sets, eliminando duplicados.
CONNECT BY Un retorno de filas en un orden jerrquico para una consultaque contenga una clusula CONNECT BY
CONCATENATION Una operacin que acepta mltiples sets de filas y regresa launin, todos los sets.
COUNT Una operacin que cuenta el Nmero de filas seleccionadas dela tabla.
STOPKEY Una operacin que cuenta donde el nmero de filas retornadases limitado por la expresin ROWNUM en la clusula
WHERE.
FILTER Una operacin que acepta un set de filas, elimina algunas deellas, y regresa el resto.
FIRST ROW Un retorno de slo la primera fila seleccionada por el query.
-
Herramientas de Diagnstico Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION OPCION DESCRIPCION
FOR UPDATE Una operacin que devuelve y busca las filas seleccionadaspor el query que contiene una clusula FOR UPDATE
INDEX UNIQUE SCAN Un retorno de un simple ROWID de un ndice
RANGE SCAN Un retorno de una o ms ROWIDs de un ndice. Valoresindexados son buscados en orden ascendente
RANGE SCAN
DESCENDING
Un retorno de una o ms ROWIDs de un ndice. Valores
indexados son buscados en orden descendente
INTERSECTION Una operacin que acepta dos sets de filas y regresa lainterseccin de los sets, eliminando duplicados
MERGE JOIN+ Una operacin que acepta dos sets de filas, cada una ordenadapor el valor especfico, combina cada fila de un set con la fila
correspondiente del otro, y regresa el resultado.
OUTER Una operacin de merge join para ejecutar una sentencia outerjoin.
CONNECT BY Un retorno de fila en un orden jerrquico por un query quecontenga una clusula CONNECT BY.
MINUS 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 OPCION DESCRIPCION
NESTED LOOPS+ Una operacin que acepta dos sets de filas, un set de salida yun 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.
NESTED LOOPS+ OUTER Un operacin LOOP para ejecutar una sentencia outer join
PROJECTION Una operacin interna
REMOTE Un retorno de datos de una base de datos remota
SEQUENCE Una operacin que involucra acceso a valores de unasecuencia
SORT AGGREGATE Un retorno de una simple fila que es el resultado de aplicaruna funcin de grupo a un grupo de filas seleccionadas
UNIQUE Una operacin que ordena un set de filas para eliminarduplicados
GROUP BY Una operacin que ordena un set de filas en grupos para unaconsulta con una clusula GROUP BY
JOIN Una operacin que ordena un set de filas antes de unaoperacin merge join
ORDER BY Una operacin que ordena un set de filas para un query conuna clusula OREDER BY
-
Herramientas de Diagnstico Operaciones y Opciones producidas por el EXPLAIN PLAN
OPERACION OPCION DESCRIPCION
TABLE ACCESS* FULL Un retorno de todas las filas de una tabla
CLUSTER Un retorno de filas de una tabla basada en un valor de la clavedel cluster indexado
HASH Un retorno de filas de uana tabla basada en un valor de laclave del hash cluster
BY ROWID Un retorno de una fila de una basada en sus ROWID
UNION Una operacin que acepta dos sets de filas y regresa la uninde los sets, eliminando duplicados
VIEW Una operacin que ejecuta una consulta a una vista y entoncesretorna 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. Identificacin de problemas
2. Anlisis
3. Acciones Correctivas
4. 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 :
1. Identificar posibles problemas
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)
2. Recolectar informacin mediante mediciones
3. Elaborar diagrama de Pareto
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
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.
-
Uso inadecuado de memoria
Bajo
rendimiento en
un sistema
Acceso a disco (I/O)
Indices Tablas
Datafiles
Fragmentacin
Diccionario de
datos
Tamao de
bloques de datos
Distribucin de
datos
Pagineo
Array size
Tamao
del SGA
Tamao de bloques de
memoria
Normalizacin/
Denomarlizacin
Mal uso de
clusters
Ciclos que causen
redundacia
Diseo
Indices
Consideraciones
de acceso
concurrente
Bloqueos por chequeo
de Integridad
Referencial sin indices
Programacin
Por integridad
referencial
Bloqueos
Compartido
No uso de indices
Bind variables
Acceso
redundantes
Tabla pivote
Mal uso del
optimizador
Hints Alias
Diagrama
Causa-efecto
-
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&TechniquesRichard J. Niemiec Editoral Osborne McGraw Hill
Presentacin compartida por Blanco Silva Consultores.