Unidad 4 - Optimización y Alto Rendimiento

download Unidad 4 - Optimización y Alto Rendimiento

of 69

Transcript of Unidad 4 - Optimización y Alto Rendimiento

  • 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.