La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Herramientas de Oracle para realizar Tuning de Sentencias SQL (cont.)

Presentaciones similares


Presentación del tema: "Herramientas de Oracle para realizar Tuning de Sentencias SQL (cont.)"— Transcripción de la presentación:

1 Herramientas de Oracle para realizar Tuning de Sentencias SQL (cont.)

2 Ejemplo 1: EXPLAIN PLAN SET STATEMENT_ID = 'P1' FOR SELECT * FROM empleado; Se generan 2 registros en la tabla plan_table con id=0 e id=1:

3 idSTATEME NT_ID TIMESTA MP REMARKS 0P122/08/05 1P122/08/

4 idOPERATIONOPTIONSOBJECT_OWNER 0SELECT STATEMENT 1TABLE ACCESS FULLFJMORENO

5 idOBJECT_NA ME OBJECT_INS TANCE OBJECT_TYPE 0 1EMPLEADO1TABLE

6 idOPTIMIZERIDPARENT_ID 0ALL_ROWS0 1ANALYZED10

7 idPOSITIONOTHEROTHER_TAG 02 11

8 idCOSTCARDINA LITY BYTES

9 Ejemplo 2: EXPLAIN PLAN SET STATEMENT_ID = 'P1' FOR SELECT * FROM dept, emp WHERE emp.depto=dept.deptno; Se generan 5 registros en la tabla plan_table con id=0,1,2,3 y 4:

10 idSTATEME NT_ID TIMESTAMPREMARKS 0P122/08/05 1P122/08/ P122/08/ yes 3P122/08/05 … 4P122/08/05 …

11 idOPERATIONOPTIONSOBJECT_OWNER 0SELECT STATEMENT 1NESTED LOOPS 2TABLE ACCESS FULLFJMORENO 3TABLE ACCESS BY INDEX ROWID FJMORENO 4INDEXUNIQUE_ SCAN FJMORENO

12 idOBJECT_ NAME OBJECT_INS TANCE OBJECT_TYPE 0 1 2EMP2TABLE 3DEPT1TABLE 4SYS_C INDEX (UNIQUE)

13 idOPTIMIZERIDPARENT_ID 0ALL_ROWS

14 idPOSITIONOTHEROTHER_TAG

15 idCOSTCARDINALIT Y BYTES

16 QUERY_PLAN NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT INDEX UNIQUE SCAN SYS_C Visualmente se puede observar así: A continuación se explican las operaciones más frecuentes que se presentan en un Explain Plan y la forma de obtener e interpretar su visualización

17 El costo estimado total está dado por el primer paso de la consulta Para que el optimizador realice una mejor toma de decisiones es importante realizar un análisis del contenido de los datos de las tablas (ver comando ANALYZE más adelante) EXPLAIN PLAN (cont.)

18 EXPLAIN PLAN Luego de conocer que información queda almacenada en la tabla del PLAN_TABLE, es necesario saber, que operaciones se pueden observar allí Las operaciones se clasifican como: - Row: Ejecutan una fila a la vez, el usuario puede ver el primer resultado antes de que la última fila sea recuperada. Útiles para una aplicación online - Set: Ejecuta sobre un conjunto de filas. Los resultados solo pueden verse hasta cuando el conjunto ha sido procesado completamente. Útiles para aplicaciones en batch

19 Ejemplo: Un join puede ser realizado mediante el método Nested Loops (que es de tipo row) o mediante un Merge (que es de tipo set). EXPLAIN PLAN

20 Operación Set o Row Uso AND-EQUALrowOperación AND entre dos o más columnas con un índice no único. CONCATENATIONrowOperación OR o IN (lista de valores) CONNECT BYrow/setOperación CONNECT BY COUNTsetOperación SELECT ROWNUM COUNT STOPKEYrowROWNUM <= constante

21 FILTERrowUna condición realizada sobre filas que son retornadas por una operación de conjunto (tal como HAVING) FOR UPDATErow Cuando se usa la cláusula FOR UPDATE (bloqueo de filas) HASH JOINsetMétodo de join basado en hashing. Variantes: Anti, Semi. INDEX FULL SCANrowORDER BY sobre una columna indexada INDEX RANGE SCANrowOperaciones BETWEEN, LIKE A%, >, =,<= etc.

22 INDEX UNIQUE SCANrow Búsqueda sobre todas las columnas de un índice único. INTERSECTIONsetOperación INTERSECTION MERGE JOINsetUn método de join usado normalmente cuando las tablas no tienen índices sobre las columnas de join. Variantes: Outer, Anti,Semi. MINUSsetOperación MINUS NESTED LOOPSrowMétodo de join usado cuando al menos una de las tablas tiene un índice sobre una de las columnas de join.

23 OUTER JOINrowUn join NESTED LOOPS con una expression outer join (+) PROJECTIONrowUna proyección de atributos producida por una operación UNION, MINUS o INTERSECTION REMOTErow/setUna operación que involucra Database Links SEQUENCErowUso de una secuencia: Sequence.NEXTVAL SORT AGGREGATEset Operación de agregación SUM, AVG, MAX, COUNT etc.

24 SORT GROUP BYsetCláusula GROUP BY SORT JOINsetUna operación resultado de un MERGE JOIN SORT ORDER BYsetCláusula ORDER BY SORT UNIQUEset Cláusula DISTINCT o resultado de una operación UNION TABLE ACCESS BY ROWID row Acceso a una tabla vía un índice o con un ROWID explícito

25 TABLE ACCESS CLUSTER row Acceso a una tabla en cluster usando la clave del cluster TABLE ACCESS FULLrowAcceso a una tabla cuando las condiciones no pueden ser aplicadas sobre columnas indexadas TABLE ACCESS HASHrow Acceso a un hash cluster usando la clave Hash UNIONrowOperación UNION (elimina duplicados) UNION-ALLrow Operación UNION-ALL (no elimina duplicados)

26 VIEWset Subconsulta correlacionada o cuando una vista es forzada a ejecutarse antes de que la consulta sea resuelta. MINUSsetOperación MINUS

27 EXPLAIN PLAN ¿Cómo generar el EXPLAIN PLAN? El plan de ejecución se genera a partir del comando EXPLAIN PLAN. La sintaxis es: EXPLAIN PLAN [SET STATEMENT_ID = 'id_de_sentencia'] [INTO nombre_tabla] FOR sentencia_sql Observemos un ejemplo:

28 EXPLAIN PLAN ¿Cómo generar el EXPLAIN PLAN? EXPLAIN PLAN SET STATEMENT_ID = 'prueba' FOR SELECT nombre, ciudad, departamento FROM compania WHERE ciudad = 'medellin ' AND departamento = 'antioquia'; Nota: El único resultado que muestra Oracle luego de ejecutar el comando será: Statement Processed (O Explicado), ya que los resultados se guardan en la tabla PLAN_TABLE vista anteriormente.

29 EXPLAIN PLAN ¿Cómo obtener el EXPLAIN PLAN? Para obtener los resultados del EXPLAIN PLAN, se puede realizar una consulta SQL en SQL*Plus sobre la tabla PLAN_TABLE. Para el caso anterior se tiene: SELECT LPAD(' ',2*LEVEL) || OPERATION || ' ' || OPTIONS || ' ' || OBJECT_NAME AS query_plan FROM PLAN_TABLE WHERE STATEMENT_ID = ' prueba ' CONNECT BY PRIOR ID = PARENT_ID START WITH ID = 1;

30 Resultado: QUERY_PLAN TABLE ACCESS FULL COMPANIA


Descargar ppt "Herramientas de Oracle para realizar Tuning de Sentencias SQL (cont.)"

Presentaciones similares


Anuncios Google