optimizaciвn y alto rendimiento (met. de afinamiento de sistemas).pdf

69
OPTIMIZACION Y ALTO RENDIMIENTO Curso Manejo e Implementación de Archivos Cat. Ing. Alvaro Díaz A. (Secc. A-) Cat. Ing. Oscar Paz (Secc. A+) Universidad de San Carlos de Guatemala Primer Semestre 2015

Upload: ricardo-hernandez

Post on 25-Sep-2015

11 views

Category:

Documents


0 download

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.