Herramientas de Oracle para realizar Tuning de Sentencias SQL

Slides:



Advertisements
Presentaciones similares
Spokesperson will be Jay Schaudies, Vice President, Global eCommerce.
Advertisements

CREATE VIEW nombre [ ( columna [,...n ] ) ] AS sentencia_select [ WITH CHECK OPTION ] 1.nombre Es el nombre de la vista. 2.Se debe tener permisos CREATE.
Maestría en Data Mining
Directions for template use This is a template that can be used either in whole group, typing in the information about an experiment, or with groups of.
E-science grid facility for Europe and Latin America CeCalCULA Ambientes y Herramientas para la e-Investigación Mérida, Portales.
Enchúlame la Máquina SQL Server 2005
Minería de datos Dr. Francisco J. Mata
USING THE INTERNET. 2 Concept 6.1 What Is the Internet? The Internet is millions of computers from all parts of the world connected so that they can communicate.
Single Table Inheritance
11/29/05 el Enfoque lunes, el 22 de febrero "¿Listos para Aprender?" Glue vocabulary sheet into Cuentos.
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
MSQL OPERADORES BIT A BIT & a & b Operador de BIT AND. I a l b Operador de BIT OR. < < a >
Query Direcciones SELECT Nombre, Apellido, Ciudad FROM Direcciones;
Spatial Database Bases de Datos Espaciales MOTORES COMERCIALES Oracle Spatial.
Bases de Datos Espaciales SPATIAL QUERY LANGUAGES
Trabajo con subconsultas
Combinación de varias tablas. Introducción Uso de alias en los nombres de tablas Combinación de datos de varias tablas Combinación de varios conjuntos.
Procedimientos para agrupar y resumir datos
ARQUITECTURA DE COMPUTADORES - PIPELINING
SQL Server 2005 ADO.NET Javier Fernández Rodríguez Noviembre 2005, Sevilla Javier Fernández Rodríguez Noviembre 2005, Sevilla.
Programando con Hilos POSIX* Intel Software College.
Programación con OpenMP* Intel Software College. Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or.
Uso de los corchetes ¿Qué hago si entre una columna y la siguiente no se visualiza todo el texto?
Guía de Implementación
INTEGRIDAD, INTEGRIDAD REFERENCIAL
Libro de Clases Electrónico Administrativo OTEC
MATLAB.
Nombre:Nº de Control: María del Carmen Raygoza Hernández Judith Itzel Requejo Hernández
Ud.8 Aplicaciones ofimáticas Índice del libro Índice del libro.
MS Tutorial de Medidores RQ Consultoría Técnica, S de RL de CV Revisión 27 Septiembre 2008 Este Turorial le ayudará a entender: 1.¿Que es un medidor?
Fundación NIC-NIIF Contratos de construcción 29/03/2017 Fundación NIC-NIIF
¿Qué es la web 2.0 Web 2.0 y educación Tipos de herramientas web 2.0 Herramientas y ejemplos de aplicación ¿Dónde buscar aplicaciones Web 2.0?
¿Qué tipo de informes personalizados pueden obtenerse?
Análisis transversal. Tablas de mortalidad
Objetivo 3: Minimizar los Costos de Operación y Administración de las Dependencias y Entidades. En coordinación con lo que establezca el programa de mediano.
Las consultas. Son cuadros de información generados a partir de datos relacionados encontrados en otras tablas que se utilizan para filtrar, ver, modificar.
Procedimientos Almacenados y Disparadores
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: SELECT Ing. Alfonso Vicente, PMP
EXPLAIN PLAN ¿Cómo obtener el EXPLAIN PLAN?
Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de p erformance Ing. Alfonso Vicente, PMP
OPTIMIZACIÓN DEL RENDIMIENTO
SQL Base de Datos LENGUAJES DE CONSULTA AR y CR no pueden ser tomados como base para implementar porque: Poseen sintaxis compleja No permiten.
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Después de completar esta Lección, será capaz de: Limitar las filas recuperadas por una consulta Ordenar las filas recuperadas por una consulta.
Oracle y Java Continuación *
13/01/08Seminario de Bases de Datos1 Oracle y Java * * Tomado del curso de Francisco Moreno.
Bases de Datos Relacionales Preparó: Ismael Castañeda Fuentes Fuentes:Manuales Sybase Manuales SQL Server Manuales Oracle BATCHS.
BASES DE DATOS Ejercicio No. 6. Ejecutar las siguientes sentencias SELECT nombre, ueldo FROM user.tabla_profesor WHERE filtro 1 UPDATE user.tabla_profesor.
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Administración de Servidores de Bases de Datos Bases de Datos de Usuarios Caso particular Adaptive Server Enterprise.
JORNADA 1 DEL 24 DE MARZO AL 30 DE MARZO EQUIPO 01 VS EQUIPO 07 EQUIPO 03 VS EQUIPO 06 EQUIPO 04 VS EQUIPO 05 EQUIPO 02 VS EQUIPO 08.
Bojos per l’economia Karl Popper: “the method of science is the method of bold conjectures and ingenious and severe attempts to refute them.”
OPERACIONES DE RECUPERACIÓN. WHERE ciudad =‘Las Palmas’; de los suministradores Obtener el código y la situación de Las Palmas SELECT sn, situacion FROM.
1 DEFINITION OF A CIRCLE and example CIRCLES PROBLEM 1a PROBLEM 2a Standard 4, 9, 17 PROBLEM 1b PROBLEM 2b PROBLEM 3 END SHOW PRESENTATION CREATED BY SIMON.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
Bases de Datos Oracle Optimización
Auditoría del Sistema ¿Qué es una Auditoría de una BD? Controlar y registrar las acciones de determinados usuarios de la BD. A nivel SO vs a nivel del.
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Optimización Francisco Moreno.
Laboratorio de optimización de BD
HINTS ¿Cómo afectar el plan de ejecución? Por defecto, el SGBD tomará en cuenta el camino de ejecución (Execution Path) determinado por el optimizador.
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Optimización Francisco Moreno.
Características Objeto Relacionales en Oracle
SQL: Structured Query Language
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
Transcripción de la presentación:

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

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:

<info type='plan_hash'> 3982109234 </info> </remark> id STATEMENT_ID TIMESTAMP REMARKS P1 22/08/05 1 <remark> <info type='plan_hash'> 3982109234 </info> </remark>

SELECT STATEMENT 1 TABLE ACCESS FULL FJMORENO id OPERATION OPTIONS OBJECT_OWNER SELECT STATEMENT 1 TABLE ACCESS FULL FJMORENO

id OBJECT_NAME OBJECT_INSTANCE OBJECT_TYPE 1 EMPLEADO TABLE

id OPTIMIZER ID PARENT_ID ALL_ROWS 1 ANALYZED

id POSITION OTHER OTHER_TAG 2 1

id COST CARDINALITY BYTES 2 1 26

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:

P1 22/08/05 1 2 3 4 id STATEMENT_ID TIMESTAMP REMARKS P1 22/08/05 1 <remark><info type='plan_hash'>3982109234</info></remark> 2 <remark><info type='plan_hash'>1285981984</info><info type='dynamic_sampling'> yes</info></remark> 3 <remark>… </remark> 4 <remark>… <remark>

SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL FJMORENO 3 id OPERATION OPTIONS OBJECT_OWNER SELECT STATEMENT 1 NESTED LOOPS 2 TABLE ACCESS FULL FJMORENO 3 BY INDEX ROWID 4 INDEX UNIQUE_SCAN

1 2 EMP TABLE 3 DEPT 4 SYS_C0012360 INDEX (UNIQUE) id OBJECT_NAME OBJECT_INSTANCE OBJECT_TYPE 1 2 EMP TABLE 3 DEPT 4 SYS_C0012360 INDEX (UNIQUE)

id OPTIMIZER ID PARENT_ID ALL_ROWS 1 2 3 4

id POSITION OTHER OTHER_TAG 6 1 2 3 4

id COST CARDINALITY BYTES 6 3 243 1 2 186 19 4 --

Visualmente se puede observar así: QUERY_PLAN ----------------------------------------------------------- NESTED LOOPS TABLE ACCESS FULL EMP TABLE ACCESS BY INDEX ROWID DEPT INDEX UNIQUE SCAN SYS_C0012360 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

EXPLAIN PLAN (cont.) 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 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

EXPLAIN PLAN 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).

Operación AND entre dos o más columnas con un índice no único. Set o Row Uso AND-EQUAL row Operación AND entre dos o más columnas con un índice no único. CONCATENATION Operación OR o IN (lista de valores) CONNECT BY row/set Operación CONNECT BY COUNT set Operación SELECT ROWNUM COUNT STOPKEY ROWNUM <= constante

FILTER row Una condición realizada sobre filas que son retornadas por una operación de conjunto (tal como HAVING) FOR UPDATE Cuando se usa la cláusula FOR UPDATE (bloqueo de filas) HASH JOIN set Método de join basado en hashing. Variantes: Anti, Semi. INDEX FULL SCAN ORDER BY sobre una columna indexada INDEX RANGE SCAN Operaciones BETWEEN, LIKE ‘A%’, >,<,>=,<= etc.

INDEX UNIQUE SCAN row Búsqueda sobre todas las columnas de un índice único. INTERSECTION set Operación INTERSECTION MERGE JOIN Un método de join usado normalmente cuando las tablas no tienen índices sobre las columnas de join. Variantes: Outer, Anti,Semi. MINUS Operación MINUS NESTED LOOPS Método de join usado cuando al menos una de las tablas tiene un índice sobre una de las columnas de join.

OUTER JOIN row Un join NESTED LOOPS con una expression outer join (+) PROJECTION Una proyección de atributos producida por una operación UNION, MINUS o INTERSECTION REMOTE row/set Una operación que involucra Database Links SEQUENCE Uso de una secuencia: Sequence.NEXTVAL SORT AGGREGATE set Operación de agregación SUM, AVG, MAX, COUNT etc.

SORT GROUP BY set Cláusula GROUP BY SORT JOIN Una operación resultado de un MERGE JOIN SORT ORDER BY Cláusula ORDER BY SORT UNIQUE 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

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

VIEW set Subconsulta correlacionada o cuando una vista es forzada a ejecutarse antes de que la consulta sea resuelta. MINUS Operación MINUS

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:

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.

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;

Resultado: QUERY_PLAN ------------------------------------------------ TABLE ACCESS FULL COMPANIA