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
Segundo Semestre 2011
CONTENIDO INTRODUCCION
Porque se afina un Sistema ? Quien afina ? Cuando se afina ?
CAUSAS DE PROBLEMAS DE 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 Desnormalizando una Base de Datos Constraints Triggers Performance de Querys Parallel Query
CONTENIDO
AFINANDO SQL Estndares de SQL Utilizar bind-variables Utilizar alias 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 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 ? 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 Beneficio Vrs. Tiempo
ProduccinDesarrollo
Diseo05
10152025
0 2 4 6 8Tiempo
C
o
s
t
o
Diseo
DesarrolloProduccin
05
10152025
0 2 4 6 8Tiempo
B
e
n
e
f
i
c
i
o
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: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 discoLa 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.
Causas de Problemas de Performance
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.
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 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 ? 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 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 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 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 uncosto en performance. Oracle Corporation diceque ste costo es similar a la ejecucin de unaque ste costo es similar a la ejecucin de unasentencia SQL en la que el constraint deintegridad se traducira.
Existen algunas otras implicaciones de performanceque usted debe de ser consciente de usar en undiseo 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.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 severashan 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 tablasque 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 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
Diseando para un mejor performance
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
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 SQLConsejos 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 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 SQLConsejos para afinar el SQL: Usar Alias :
El uso de alias en las tablas y la inclusin de los prefijos en todoslos nombres de columnas cuando ms de una tabla esconsultada reducir el tiempo de anlisis de sintaxis y previeneerrores.
Considerando el siguiente ejemplo:
SELECT E.emp_no, name, tax_no, c.comp_code, comp_nameFROM company C,
Emp EWHERE 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_nameFROM Company C,
Emp EWHERE E.comp_code = C.comp_code
Afinando SQLConsejos 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)(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 SQLEl 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: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 reglasEl 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 Condicion1 ROWID = Constant2 Cluster join with unique or primary key = Constant3 Hash cluster key with unique or primary key = Constant4 Entire unique concatenated index = Constant5 Unique indexed column = Constant6 Entire cluster key =Corresponding cluster key of other 6 Entire cluster key =Corresponding cluster key of other
table in the same cluster7 Hash cluster key = Constant8 Entire cluster key = Constant9 Entire non-UNIQUE concatenated index = Constant10 Non-UNIQUE index merge11 Entire concatenated index =lower bound12 Most leading columns of concatenated index = Constant13 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 columns19 ORDER BY entire index20 Full table scans
Optimizador basado en reglas TABLA PIVOTE
Join de dos tablas:
Tabla TAB1 de 16,384 registrosTabla 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 2000AND E.cat_no = C.cat_noAND 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_noAND E.locn = L.locnAND 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 ndicesPara 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 CostosCuando 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 CostosHints (Continuacin)FULL USE_CONCAT
HASH ORDERED
INDEX USE_NL
INDEX_ASC USE_MERGE
INDEX_DESC CACHE
AND_EQUAL NO_CACHEPARALEL 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 SQLConsejos para afinar el SQL: Uso eficiente de la clusula WHERE:
SELECT ........FROM emp EWHERE emp_salary > 50000AND emp_type = MANAGERAND 25 < ( SELECT COUNT(*)AND 25 < ( SELECT COUNT(*)
FROM empWHERE emp_mgr = E.emp_no)
Es mejor
SELECT ........FROM emp EWHERE 25 < ( SELECT COUNT(*)
FROM empWHERE emp_mgr = E.emp_no)
AND emp_salary > 50000AND emp_type = MANAGER
Afinando SQLConsejos para afinar el SQL: Uso eficiente de la clusula WHERE:
USANDO ANDS SIN COMPETENCIA DE INDICESSELECT ........FROM emp EWHERE 25 < ( SELECT COUNT(*)
FROM empWHERE emp_mgr = E.emp_no)WHERE emp_mgr = E.emp_no)
OR (emp_salary > 50000 AND emp_type = MANAGER)
Es mejor
SELECT ........FROM emp EWHERE (emp_salary > 50000 AND emp_type = MANAGER)OR 25 < ( SELECT COUNT(*)
FROM empWHERE emp_mgr = E.emp_no)
USANDO ORS SIN COMPETENCIA DE INDICESSELECT ....FROM emp EWHERE 25 < ( SELECT COUNT(*)
FROM empWHERE emp_mgr = E.emp_no)
OR (emp_salary > 50000 AND emp_type = MANAGER)
Afinando SQL
OR (emp_salary > 50000 AND emp_type = MANAGER)
Es mejor
SELECT ....FROM emp EWHERE (emp_salary > 50000AND emp_type = MANAGER)OR 25 < ( SELECT COUNT(*)
FROM empWHERE emp_mgr = E.emp_no)
Afinando SQL Uso de ROWID
SELECT ROWIDINTO :emp_rowidFROM empWHERE emp.emp_no = 5643FOR UPDATE;
.
.
.
UPDATE empSET emp.name = ........WHERE ROWID = :emp_rowid;
Afinando SQL Reduciendo el nmero de viajes a la Base de Datos
METODO 1
SELECT emp_name,salary,gradeFROM empWHERE empno = 123;
SELECT emp_name,salary,gradeFROM empWHERE empno = 567;
METODO 2DECLARE CURSOR C1 (E_no NUMBER) ISSELECT emp_name,salary,gradeFROM empWHERE empno = E_no;BEGIN
OPEN C1(123);FETCH C1 INTO .........;CLOSE C1;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 BWHERE A.emp_no = 123AND B.emp_no = 567;
Afinando SQL Uso de valores null Deshabilitar ndices
SELECT account_name, trans_date, ammountFROM transactionWHERE substr(account_name,1,7) = CAPITAL;
SELECT account_name, trans_date, ammountFROM transactionWHERE account_name LIKE CAPITAL%;
SELECT account_name, trans_date, ammountFROM transactionWHERE amount != 0;
SELECT account_name, trans_date, ammountFROM transactionWHERE amount > 0;
SELECT account_name, trans_date, ammountFROM transactionWHERE TRUNC(trans_date) = TRUNC(SYSDATE)
SELECT account_name, trans_date, ammountFROM transactionWHERE trans_date BETWEEN TRUNC(SYSDATE)
AND TRUNC(SYSDATE)+0.99999;
SELECT account_name, trans_date, ammountFROM transactionWHERE account_name || account_type = AMEXA
SELECT account_name, trans_date, ammountFROM transactionWHERE account_name = AMEX
AND account_type = A
SELECT account_name, trans_date, ammountFROM transactionWHERE amount + 3000 < 5000
SELECT account_name, trans_date, ammountFROM transactionWHERE amount < 2000
SELECT account_name, trans_date, ammountFROM transactionWHERE account_name = NVL(:acc_name,account_name);
SELECT account_name, trans_date, ammountFROM transactionWHERE 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),H.hist_type, lookup_hist_type(H.hist_type),COUNT(*)
FROM emp_history HGROUP 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 NO EXISTS en lugar de NOT IN IN o UNION en lugar de OR
Herramientas de Diagnstico
Herramientas de Diagnstico
ANALIZEEXPLAIN PLAN
SQL_TRACESQL_TRACETKPROF
Herramientas de Diagnstico
ANALIZELos objetos de la base de datos necesitan ser
analizados para tener estadsticas disponiblespara el optimizador basado en costos.
La sintaxis de la sentencia para analizar es lasiguiente:
ANALYZETABLE XXX COMPUTE STATISTICSINDEX 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 realizasentencia 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 DESCRIPCIONAND EQUAL Una operacin que acepta multiples sets de ROWID y regresa
la interseccin de los sets, eliminando duplicados.CONNECT BY Un retorno de filas en un orden jerrquico para una consulta
que contenga una clusula CONNECT BYCONCATENATION Una operacin que acepta mltiples sets de filas y regresa laCONCATENATION Una operacin que acepta mltiples sets de filas y regresa la
unin, todos los sets.COUNT Una operacin que cuenta el Nmero de filas seleccionadas de
la tabla.STOPKEY Una operacin que cuenta donde el nmero de filas retornadas
es limitado por la expresin ROWNUM en la clusulaWHERE.
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 DESCRIPCIONFOR UPDATE Una operacin que devuelve y busca las filas seleccionadas
por el query que contiene una clusula FOR UPDATEINDEX 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 Un retorno de una o ms ROWIDs de un ndice. ValoresRANGE SCANDESCENDING
Un retorno de una o ms ROWIDs de un ndice. Valoresindexados 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 filacorrespondiente 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 filasque 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 DESCRIPCIONNESTED LOOPS+ Una operacin que acepta dos sets de filas, un set de salida y
un set de entrada. Oracle compara cada fila del set de salidacon cada fila del set de entrada y regresa aquellas filas quesatisfacen una condicin.
NESTED LOOPS+ OUTER Un operacin LOOP para ejecutar una sentencia outer joinPROJECTION Una operacin internaPROJECTION Una operacin internaREMOTE Un retorno de datos de una base de datos remotaSEQUENCE Una operacin que involucra acceso a valores de una
secuenciaSORT AGGREGATE Un retorno de una simple fila que es el resultado de aplicar
una funcin de grupo a un grupo de filas seleccionadasUNIQUE Una operacin que ordena un set de filas para eliminar
duplicadosGROUP BY Una operacin que ordena un set de filas en grupos para una
consulta con una clusula GROUP BYJOIN Una operacin que ordena un set de filas antes de una
operacin merge joinORDER BY 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 OPCION DESCRIPCIONTABLE 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 clusterclave del hash cluster
BY ROWID Un retorno de una fila de una basada en sus ROWIDUNION Una operacin que acepta dos sets de filas y regresa la unin
de los sets, eliminando duplicadosVIEW 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 a1SELECT LPAD(,2*(LEVEL-1))||operation||||
options||||object_name||||DECODE(id,0,Cost=||position) Query PlanFROM plan_tableSTART WITH id=0
AND statement_id like &a1CONNECT BY PRIOR id = parent_id AND statement_id like &a1;
Herramientas de Diagnstico
SQL_TRACEUtilidad que escribe un archivo de rastro conteniendo estadsticas de
performance.Parmetros a inicializar en el init.ora con SQL_TRACE
SQL_TRACE TRUESQL_TRACEUSER_DUMP_DESTTIMED_STATISTICSMAX_DUMP_FILE_SIZE
TRUEDirectorio
TRUEnumber
Como habilitar el SQL_TRACE :SQL*Plus Alter session set SQL_TRACE TRUE;
Herramientas de Diagnstico
TKPROFUtilidad que traslada a informacin legible el archivo generado por
SQL_TRACE, mostrando tambin el plan de ejecucin de lasentencia.
TKPROF tracefile listfile [SORT = parameters]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 lossiguientes cuatro pasos:
1. Identificacin de problemas2. Anlisis3. Acciones Correctivas4. Presentacin de Resultados
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Identificacin de problemas
Es necesario identificar los problemas y cuantificarlos para teneruna referencia inicial sobre el estado actual del sistema,una referencia inicial sobre el estado actual del sistema,para esto se usan los denominados diagramas de Pareto enlos cuales se ve de manera grfica cuales son losproblemas que son mas frecuentes o puntos crticos en elsistema y que pueden ser la causa del bajo desempeo,como resultado se deber saber cual es el estado actual delsistema.
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Identificacin de problemasPara 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 mediciones3. Elaborar diagrama de Pareto4. Resumen.
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
AnlisisEl 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 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 lascaractersticas de rendimiento del sistema. Como base secaractersticas de rendimiento del sistema. Como base sehan identificado de manera general un grupo de causas quehacen reflejar un bajo rendimiento en un sistema, sinembargo se podr conocer con mayor detalle otra lista decausas 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
DiagramaCausa-efecto
un sistema
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
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Anlisis: Priorizar tareas
Una vez completa la informacin sobre las causas y efectosel paso siguiente es asignar la importancia de cada factor.el paso siguiente es asignar la importancia de cada factor.Todos los factores no se relacionan necesariamente enforma estrecha con la caracterstica, de manera que semarcarn esos factores que parecen tener un efectoparticularmente significativo sobre la caracterstica y se lesasignar la prioridad correspondiente.
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Anlisis: Conclusiones y Recomendaciones
Se elaborar un documento donde se resumen los factoresSe elaborar un documento donde se resumen los factorescrticos del sistema recomendndose las tcnicas posibles ausarse que incrementen el rendimiento del sistema y eltiempo y recursos que tomar cada mejora.
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Anlisis: Elaborar Cronograma
Se detallarn todas las actividades en orden de mas alta prioridadSe detallarn todas las actividades en orden de mas alta prioridada la ms baja, especificando la fecha de inicio y finalizacinde cada una.
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Acciones correctivas
Se ejecutarn todas las actividades detalladas en el cronograma,acompaadas de su respectiva documentacin donde seacompaadas de su respectiva documentacin donde seexplicarn las tcnicas utilizadas para su correccin.Adems se recabar toda la informacin del desempeo decada factor identificado con anterioridad (Punto 1) comoproblema
METODOLOGIA DE AFINAMIENTO DE SISTEMAS
Presentacin de Resultados
Basndose en los datos y el diagrama inicial se elaborar unnuevo diagrama de Pareto para su comparacin donde senuevo diagrama de Pareto para su comparacin donde seobservarn el impacto de las mejoras implementadas.
REFERENCIAS
Oracle Performance Tuning, Segunda EdicinGurry&Corrigan, Editorial OReillyOracle Performance Tuning Oracle Performance Tuning Tips&TechniquesRichard J. Niemiec Editoral Osborne McGraw Hill
Presentacin compartida por Blanco Silva Consultores.