SlideShare una empresa de Scribd logo
1 de 50
“ Guía para la Optimización de Consultas  en una Base de Datos Relacional Utilizando SQL” UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD DE CIENCIAS EXACTAS Y TECNOLOGIA Carrera de Ingeniería Informática Elaborado por: Ubaldo Pérez Ferreira Proyecto de Grado Proyecto de Grado para optar al Título de: Licenciatura en Ingeniería Informática Santa Cruz de la Sierra – Bolivia
Temario ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parte I - Perfil del Proyecto Antecedentes Justificación Objetivos Es muy común encontrar en una Aplicación Productiva consultas SQL, que al momento de ejecutarse, generen problemas en el SBD, tales como: ,[object Object],[object Object],[object Object],[object Object],Las consultas que generan este tipo de problema, se las denomina “COSTOSAS” o “INEFICIENTES”. Y por supuesto estos problemas son la causa de: Malestar entre los usuarios. Mala imagen corporativa, etc.
Parte I - Perfil del Proyecto ,[object Object],Antecedentes Justificación Objetivos  ¿Por donde empezar?, si no se cuenta con pasos bien definidos, resolver el problema de una Consulta SQL costosa, puede tomar horas de trabajo. La Guía propuesta es una alternativa para resolver el problema de las Consultas SQL costosas.
Parte I - Perfil del Proyecto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Antecedentes Justificacion Objetivos
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas El Modelo de Datos Relacional (MDR) fue propuesto por Codd en 1970 . El MDR, esta fundamentado en la teoría matemática de conjuntos, de ahí, su potencial.  Los conjuntos en el MDR son denominados Dominios (D). Un  Dominio  es un conjunto de valores escalares del mimo tipo. La única herramienta de estructura de datos usada por el MDR es una Relación  (R) .
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Una Relación  R  , es representada como una Tabla de dos dimensiones  n  columnas x  m  filas . Tupla , conjunto de valores t 1 …t m ,  t i =(v 1 ,…,v n ) / v 1     A 1     …    v n     A n Atributo , papel que desempeña D en R. Grado  (n) Cardinalidad  (m). ESQUEMA INSTANCIA ,[object Object],[object Object],[object Object],V n … V 1 … … A n … A 1
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Un Lenguaje de Consulta Relacional sirve para que el usuario solicite información de la Base de Datos Relacional. Normalmente son de alto nivel, es decir con alguna similitud al lenguaje natural, lo que permite que sea fácil de aprender y de manipular por cualquier usuario L R1 R2 R3
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Operaciones adicionales   Estas operaciones pueden ser expresadas sobre la base de las primeras cinco Operaciones Básicas del Algebra Relacional ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Operaciones Unarias Operaciones Binarias El Algebra Relacional:  Es un Lenguaje de Consulta Procedimental y consiste de una colección de operaciones de alto nivel que operan sobre Relaciones
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Expresión Algebraica .  Las operaciones del Algebra Relacional, usualmente están incluidas dentro de una Expresión Algebraica; las mismas que especifican la manera en que los datos requeridos deben ser recuperados de las Relaciones.  A,B,X (    X=“aa” (R1 XR2)) El resultado de una Expresión Algebraica es uma nueva Relación Aplicando la Expresión Algebraica ss bb uu aa R2 Y X 234 123 ccc 213 222 bbb R1 234 111 aaa C B A aa 123 ccc aa 222 bbb aa 111 aaa X B A
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Árbol Algebraico .  Las operaciones del Algebra Relacional, pueden ser representada en su totalidad en un Árbol Algebraico.  A,B,X (    X=“aa” (R1 XR2)) R1 R2    X=“aa”  A,B,X X 1ro. Producto Cartesiano 2do. Seleccionar las tuplas con X=“aa” 3ro. Proyectar A,B,X Lectura de abajo  hacia arriba Herramienta Básica utilizada por los SGBD.
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Lenguaje SQL (Structure Query Languaje) .  Es un lenguaje Relacional Comercial NO Procedimental, al igual que el Algebra Relacional opera sobre relaciones. El resultado de una consulta en SQL es, por supuesto, una nueva relación. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Un  Sistema de Gestión de Bases de Datos  (SGBD o DBMS ‘Database Management System”) es el conjunto de programas que permiten Definir,  Manipular  y Utilizar la información que contienen las Bases de Datos, entre otras tareas (Autorizaciones, Seguridad,…) SGBD
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Programa de Aplicación Esquema de BD Consulta de Usaurio Tabla de Autorizacion Adm. de Accesos Concurrente Compilador  LDD Procesador  de  Consultas Gestor De Base de Datos Gestor de Archivos Datos + Index Diccionario  de Datos Compilador LMD Lenguaje SQL Control de  Acceso
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas El Proceso de Optimización de Consultas Datos + Index Diccionario  de Datos Traductor (Parser) Árbol Relacional Plan de Ejecución Consulta  SQL Resultado de la Consulta Optimizador de Consulta  Motor de Ejecucion Reglas de Transformación de Expresiones Estadísticas de las Relaciones. Medidas de Costos.
Parte II - Fundamentos Teóricos An á lisis de la Consulta Selección de Caminos de Accesos Selección de Ordenes JOIN Uso de Tablas Temporales Selección del Plan de Ejecución Fases del Optimizador ASE  Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas El Optimizador SYBASE (Adaptive Server Enterprice -ASE) ,   esta basado en costos, creado en 1979 para el SGBD SYSTEM R.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta La Guía es una herramienta de propósito general, en algunos casos puede ser muy compleja o muy simple.  Consideraciones.   No esta orientada a un SGBD en particular   La Guía debe ser vista  como una herramienta m a s en el proceso de Optimización de Consultas.  La Guía puede ser utilizada este o no poblada la Base de Datos. La guía esta orientado a cierto de tipo de usuarios como ser: Administradores de Base de Datos, Diseñadores de Base de Datos y Programadores de Aplicaciones..
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Paso 1 Generar el Plan de Ejecución Paso 2 Reescribir la Consulta  ¿Reescribir la Consulta? Paso 1 Generar el Plan de Ejecución Paso 3 Crear y Gestionar Índices  ¿Ajustar  y/o Crear Índices? Paso 1 Generar el Plan de Ejecución Paso 4 Ajustar  el Esquema de la BD ¿Ajustar el Esquema de BD Paso 1 Generar el Plan de Ejecución SI NO SI SI NO NO Estadísticas Obsoletas? Análisis del Plan de Ejecución Expresiones SARG Orientar al uso de  INDICES Existentes? Crear INDICES? Ajustar los Existentes Desnormalizar Adicionar Atributos Derivados Continua
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Paso 1. Generar el Plan de Ejecución El Plan de Ejecución muestra el orden lógico en la cual se acceden a las tablas y el  método de acceso que utiliza  para leer cada tabla   .  Generar el Plan de Ejecución es relativamente fácil, lo más importante es ANALIZAR la informacion que proporciona.  Antes de GENERAR el Plan de Ejecución verificar que las Estadísticas de las Tablas no sean Obsoletas. De lo contrario actualice. El método utilizado para leer la tabla de la manera más eficiente, incluyendo el tipo de método de asociación (Join). 7 Cómo filtra las filas la cláusula WHERE y si el filtrado se realiza a través de un  índice   o se hace de manera  secuencial 6 El orden en que se accede a las tablas durante la ejecución. 5 Tiempo de ejecuci ó n (min, seg, ms). 4 Numero de filas estimadas a retornar 3 Costo Estimado. Un valor que representa el coste estimado de los recursos de la consulta 2 Una copia de la sentencia SELECT. 1 Descripción Parte
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Dos métodos de accesos a los Datos. Cuando exista un FULL TABLE SCAN, la consulta tiene una alta probabilidad  de ser costosa a mayor cantidad de datos.
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Planes de Ejecución para diferentes SGBD. SELECT  *  FROM Customer  WHERE customer_num = 101 Volver La línea dos indica que se utilizo el filtro customer_num=101, la línea tres indica que el índice esta ordenado, y en la línea cuatro se índica que se utiliza el índice idx_customer. 1. SELECT statement 2.  FETCH customer_num=101 3.  SORT 4.  IXSCAN INDEX idx_customer DB/2 La línea dos se indica que se utiliza el índice idx_customer, la línea tres indica que la busque utilizo el filtro customer_num=@101. 1. SELECT statement 2.  CLUSTER INDEX SEEK (idx_customer) 3.  SEEK:( customer_num=@101 SQL SERVER La línea dos indica que se especifica que el acceso es vía índice y además utilizando el filtro customer_num=101, la línea tres indica que el índice utilizado es el idx_customer. 1. SELECT statement 2.  TABLE ACCES BY INDEX ROWID customer_num=101 3.  INDEX UNIQUE SCAN idx_customer ORACLE La línea dos indica que INFORMIX accede mediante un índice. La línea tres indica que el índice utilizado en idx_customer, la línea cuatro indica que se utilizó el campo customer_num como filtro 1. SELECT statement 2. INDEX PATH 3.  INDEX KEY: idx_customer 4.  LOWER INDEX FILTER:  ( customer_num=101) INFORMIX Análisis del Plan de Ejecución Plan de Ejecución Motor de Base de Datos
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Paso 2. Reescribir la Consulta. El SQL permite escribir una consulta de diferentes maneras, sin embargo, esto implica una estrategia de acceso diferente. SELECT fname  FROM customer, orders WHERE order_date=“20/01/1989”  AND P.customer_num = S.customer_num  GROUP BY fname  SELECT DISTINCT  fname  FROM customer WHERE “20/01/1989” = ANY  (SELECT order_date FROM orders WHERE customer.customer_num = orders.customer_num) SELECT DISTINCT  fname  FROM customer WHERE “20/01/1989” IN  (SELECT order_date FROM orders WHERE customer.customer_num = orders.customer_nu ) . SELECT DISTINCT  fname  FROM customer WHERE  (SELECT COUNT(  ) FROM orders WHERE customer.customer_num = orders.customer_num  AND order_date = “20/01/1989”)>0 SELECT DISTINCT  fname  FROM customer, orders WHERE customer.customer_num = orders.customer_num  AND order_date = “20/01/1989” SELECT DISTINCT  fname  FROM customer WHERE EXISTS ( SELECT   FROM ORDERS WHERE customer.customer_num =  orders.customer_num  AND order_date = “20/01/1989”) SELECT DISTINCT  fname  FROM customer WHERE customer_num = ANY  ( SELECT customer_num FROM orders WHERE order_date = “20/01/1989”) SELECT DISTINCT  fname  FROM customer WHERE customer_num IN (SELECT customer_num  FROM orders WHERE order_date = “20/01/1989”)
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reglas para evitar escribir Consultas SQL costosas. R1. Transferir Pequeña Cantidad de Datos.   ,[object Object],[object Object],[object Object],[object Object],WHERE A=1 WHERE A>=12 AND A<=15 WHERE A=1 AND B<5 Usa el índice WHERE B=10 WHERE C=212 WHERE B>=12 AND C=15 No usa el índice R4. Evitar el Uso de la Cláusula NOT IN   ,[object Object],[object Object],[object Object]
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reglas para evitar escribir Consultas SQL costosas. R12. Usar Tablas Temporales para Agilizar la Consulta. R6. Evitar no Iniciar una Serie de Substring WHERE fname[4,2]=“SC” ,[object Object],[object Object],[object Object],[object Object],[object Object],R9. Uso de la Cláusula UNION para Eliminar el Full Table Scan.   R10. Aplicar Criterios Sobre uno de los Lados del Join. ,[object Object],[object Object],[object Object],Volver
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Paso 3. Crear y Gestionar Índices. Los INDICES se utilizan para agilizar las búsquedas de información.   ¿Si los índices proporcionan celeridad, por qué no indexar todas las columnas?.   Mediante el uso de índices se evita el FULL TABLE SCAN. Tipos de Indices. Índices Primario , son creados sobre los campos llaves primaria. Índices Secundarios , son creados sobre los campos llaves foráneas, o sobre atributos con alta selectividad. Actualizar, borrar e insertar datos sobre una  columna indexada  consume más tiempo. Los índices en una tabla como regla de oro no mas de 5.  La probabilidad de que el Optimizador seleccione índice incorrecto aumenta con la cantidad de índices.
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reglas para crear índices.   R1. Campos Indexados en Criterios de Consultas.  Los campos definidos como PK ya  están indexados, pero se deben  investigar aquellos campos que se incluyen en muchas consultas   R2. Joins con Campos Indexados.   Si existe un JOIN entre dos o mas tablas, los campos comunes obligatoriamente deben ser creados como índices. R3. Usar Índices de Múltiples Campos Cuando sea Necesario.  usar índices sobre campos sustitutos, en lugar de  tener  índices con campos compuesto.   R4. Evitar Valores Nulos en un Índices.  Si un atributo es definido como índice, evite los valores NULL. R5. Atributos en la cláusula ORDER BY.  Si existen atributos que aparecen frecuentemente en la cláusula ORDER BY, deben creados como indices compuestos.
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reglas para crear índices.   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Volver
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Paso 4. Ajustar el Esquema de la Base de Datos.   ,[object Object],[object Object],[object Object],[object Object],Al realizar el diseño lógico se recomienda llegar, al menos, hasta la 3FN, para obtener un esquema con una estructura consistente y sin redundancias. Pero, a menudo, sucede que las BD Normalizadas  no proporcionan la máxima eficiencia  a las Consultas SQL. Por lo tanto, hay que volver atrás y desnormalizar, sacrificando los beneficios de la normalización para mejorar las Consultas.
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reglas para la Desnormalización de Relaciones.   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parte III – Propuesta y Aplicación de la Guía ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reglas para la Desnormalización de Relaciones.   ,[object Object],[object Object],[object Object],[object Object],[object Object],Volver
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Esquema de la BD Valores.   inv_header inv_detalle  tiene 1 N create table inv_header ( nro_tran serial not null  primary key , nro_doc integer not null , fecha date not null , … create table inv_detalle ( nro_tran integer not null , ing_egr char(1) not null , orden integer not null , cod_tv smallint not null , nro_valor integer  … foreign key  (nro_tran) references inv_header, primary key (nro_tran,ing_egr,orden,cod_tv,nro_valor), 95.21 3,840,140 26 inv_detalle 2.20 36,162 64 inv_header Tamaño de la Tabla (Mbyte) Numero de Filas Tamaño de la tabla (Bytes) Nombre Tabla
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 1.   QUERY: ------ select * from inv_header where nro_tran=100 or nro_tran=300 Estimated Cost: 2 Estimated # of Rows Returned: 2 1) inv_header:  SEQUENTIAL SCAN Filters: (inv_header.nro_tran = 100 OR  inv_header.nro_tran = 300 ) select * from inv_header where nro_tran=100 or nro_tran=300 Resultado Tiempo:  4.1 min. Método de Acceso:  FULL TABLE SCAN   Listar el detalle de valores de las transacciones numero 100 y 300. Análisis Existe un índice sobre el campo nro_tran, sin embargo no fue utilizado, esto debido a que la cláusula WHERE no es SARGABLE. PASO 1.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 1.   QUERY: ------ select * from inv_header where nro_tran=1 union select * from inv_header where nro_tran=300 Estimated Cost: 2 Estimated # of Rows Returned: 2 1) inv_header:  INDEX PATH (1) Index Keys: nro_tran Lower Index Filter: inv_header.nro_tran = 100 Union Query: ------------ 1) inv_header:  INDEX PATH (1) Index Keys: nro_tran Lower Index Filter: inv_header.nro_tran = 300 Solución. Reescribir la consulta, para que la cláusula WHERE sea SARGABLE, se utilizo  la Regla 9 del paso 2. select * from inv_header  where nro_tran=100  union select * from inv_header  where nro_tran=300 Resultado. Tiempo:  0.01 min. Método de Acceso:  INDEX PATH   PASO 2.   PASO 1.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 2.   QUERY: ------ select * from inv_detalle where cod_tv=2 and nro_valor=700021 Estimated Cost: 2 Estimated # of Rows Returned: 1 1) inv_detalle:  SEQUENTIAL SCAN Filters: (inv_detalle.cod_tv = 2 AND  inv_detalle.nro_valor = 700021 ) select * from inv_detalle where cod_tv=2 and nro_valor=700021 Listar el detalle de movimiento de la factura numero 700021 . Resultado. Tiempo:  8.3 min. Método de Acceso:  FULL TABLE SCAN   Análisis No existe un índice sobre los campos cod_tv y  nro_valor, esta situación hace que el SGBD se decida por un acceso FULL TABLE SCAN. PASO 1.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 2.   QUERY: ------ select * from inv_detalle where cod_tv=2 and nro_valor=700021 Estimated Cost: 2 Estimated # of Rows Returned: 1 1) informix.inv_detalle:  INDEX PATH (1) Index Keys: cod_tv nro_valor Lower Index Filter: (informix.inv_detalle.cod_tv = 2 AND  informix.inv_detalle.nro_valor = 700021 ) Análisis. Se observa que la cláusula WHERE es de tipo SARGABLE, sin embargo la tabla inv_detalle no cuenta con los índices adecuado. Solución. Se procedió a crear un índice: CREATE INDEX idx_inv_detalle1 ON inv_detalle(cod_tv,nro_valor) . Resultado. Tiempo:  0.01 min. Método de Acceso:  INDEX PATH   PASO 3.   PASO 1.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 3.   QUERY: ------ select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and year(fecha)=&quot;2004&quot; and month(fecha)=&quot;01&quot; Estimated Cost: 4 Estimated # of Rows Returned: 1 1) inv_header:  SEQUENTIAL SCAN Filters: (YEAR(inv_header.fecha )=2004 AND MONTH(inv_header.fecha )=1 ) 2) informix.inv_detalle:  INDEX PATH (1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor Lower Index Filter: inv_detalle.nro_tran=inv_header.nro_tran NESTED LOOP JOIN select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and year(fecha)=&quot;2004&quot; and month(fecha)=&quot;01&quot; Listar el detalle de movimiento de valores correspondiente al mes de enero del 2004. Resultado Tiempo:  10.4 min. Método de Acceso:  FULL TABLE SCAN   Análisis Se observa que la tabla inv_detalle no tiene el indice adecuado,  razón por la cual el SGDB elige el FULL TABLE SCAN. PASO 1.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 3.   QUERY: ------ select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and year(fecha)=&quot;2004&quot; and month(fecha)=&quot;01&quot; Estimated Cost: 4 Estimated # of Rows Returned: 1 1) inv_header:  SEQUENTIAL SCAN Filters: ( YEAR(inv_header.fecha )=2004  AND MONTH(inv_header.fecha )= 1 ) 2) informix.inv_detalle:  INDEX PATH (1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor Lower Index Filter:  inv_detalle.nro_tran=inv_header.nro_tran NESTED LOOP JOIN Solución. Se creo el índice en la tabla inv_header utilizando el campo fecha. CREATE INDEX idx_inv_header1 ON inv_header(fecha) Resultado. Tiempo:  10.4 min. Método de Acceso:  FULL TABLE SCAN   Análisis El plan no varia ni en tiempo y ni en el tipo de acceso, pese a que se creo el  índice. El problema esta en la presencia de funciones en la cláusula WHERE. PASO 3.   PASO 1.
Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 3.   QUERY: ------ select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and fecha between &quot;01/01/2004&quot; and &quot;31/01/2004&quot; Estimated Cost: 4 Estimated # of Rows Returned: 1 1) inv_header:  INDEX PATH (1) Index Keys: fecha Lower Index Filter: inv_header.fecha >= 01/01/2004 Upper Index Filter: inv_header.fecha <= 31/01/2004 2) inv_detalle:  INDEX PATH (1) Index Keys:  nro_tran ing_egr orden cod_tv nro_valor Lower Index Filter: inv_detalle.nro_tran =  inv_header.nro_tran NESTED LOOP JOIN Solución. Reescribir la consulta, para que la cláusula WHERE sea SARGABLE, se utilizo  la Regla 11 del paso 2. select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and fecha between &quot;01/01/2004&quot; and &quot;31/01/2004&quot; Resultado. Tiempo:  0.01 min. Método de Acceso:  INDEX PATH   PASO 2.   PASO 1.
Conclusiones Conclusiones Recomendaciones. Los pasos de la presente Guía proporcionan un marco de referencia para poder encarar el problema de rendimiento de consultas SQL costosas. ,[object Object],[object Object],[object Object],[object Object],Debe primar el criterio y la experiencia para el uso de la presente Guía.
Recomendaciones Conclusiones Recomendaciones. ,[object Object],[object Object],[object Object],[object Object],Utilice herramientas automatizadas para Optimizar Consultas, como por ejemplo: http:// www.quest.com /es/
MUCHAS GRACIAS.
MUCHAS GRACIAS.
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Estadísticas de la Base de Datos. Además, se utiliza información acerca de los índices Volver
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Medidas de Costos .  El costo de un Plan de Ejecución se hace en función de la  cantidad de CPU utilizada  y de  la cantidad de páginas de disco rescatadas .   b.1. Búsqueda Lineal (Full Table Scan o Table Scan) b.2. Índice Primario, igualdad en la clave . b.3. Índice Secundario, igualdad . Volver La mas costosa La mas eficiente +/- eficiente
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Reglas de Equivalencias de Expresiones.   Una regla de equivalencia permite transformar una expresion E1 en la otra E2, mientras se preserva la equivalencia   .   Aplicando las Reglas Volver
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Se analiza cada tabla con el fin de reconocer los SARG (Search Argument-able, argumentos de búsqueda) Análisis de la Consulta.   Un SARG limita el número de filas que satisfacen la consulta.  (Atributos selectivos) x , y pertenecen a la misma tabla, z es foráneo. Volver x  + 2 = 20 x  = 20 - 2 x  LIKE '%tern' x  LIKE 'pat%' x  NOT IN (4, 5, 6) x  IN (4, 5, 6) x  =  y x  =  z x  = 4 OR  y  = 5 x  > 25 x  IS NOT NULL x  IS NULL x  <> 10 x  = 10 Expresion Non SARG Expresiones SARG
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Es hacer calzar las cláusulas SARG con los índices existentes en la BD, además compara los costos versus un FULL TABLE SCAN   .  Selección de Índices.   ASE usa las estadísticas de distribución de datos de las Estadísticas de la BD, para estimar el costo de los caminos de acceso. Volver El objetivo general es calzar un SARG con un índice para evitar un  FULL TABLE SCAN .
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas … FROM Tabla1, Tabla2,Tablan Selección de Ordenes JOIN.   La cláusula  FROM  no dicta el orden en el cual las tablas deben ser procesadas   . Se evalúa todas las permutaciones razonables y se estima el costo total en términos de tiempo de E/S.   Volver El escenario de costo en el peor caso para un join es el que implementa un  FULL TABLE SCAN  en ambas tablas   .  99.999% 148512 20922789888000 16 99.7% 11088 3628800 10 98.3% 6048 362880 9 92.5% 3024 40320 8 73.3% 1344 5040 7 30% 504 720 6 Ahorro Método Optimizado N! Número de Tablas
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Dado que las tablas temporales producen un procesamiento adicional y consumo de E/S el optimizador debe decidir si debe crear o no estas tablas.  Uso de Tablas Temporales.   Para el caso de la cláusula GROUP BY, siempre se debe crear una tabla temporal para realizar el agrupamiento. Para el caso de la cláusula DISTINCT, se debe crear una tabla que ordene los valores y elimine los duplicados. Si existe un índice único no es necesario.  Para el caso de la cláusula ORDER BY, la utilización de una tabla dependerá de los índices sobre la tabla. Volver
Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Sin embargo, no siempre el Optimizador seleccione el mejor Plan. Selección del Plan de Ejecución.   De todos los Planes generados por ASE, la selección del Plan de Ejecución Optimo, esta determinado por la solución que tenga el menor costo estimado.  ¿Se consideró los índices existentes en cada tabla o se está realizando un FULL TABLE SCAN?  ¿Se utilizan tablas temporales para procesar la consulta ?  ¿Cuales son los órdenes de JOIN que utiliza el optimizador para resolver la consulta ? ASE y los demás Optimizadores, proporciona una herramienta llamada SHOWPLAN, que devuelve al usuario un detalle del plan de ejecución   , en la cual se puede verificar que: Volver

Más contenido relacionado

La actualidad más candente

Documentación de sistemas
Documentación de sistemasDocumentación de sistemas
Documentación de sistemasGladys Rodriguez
 
Documentación base de datos
Documentación base de datos  Documentación base de datos
Documentación base de datos Mario De La Cruz
 
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptxMONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptxLuciiAntonio
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelaspineda2
 
Caracteristicas de los Sistemas Operativos
Caracteristicas de los Sistemas OperativosCaracteristicas de los Sistemas Operativos
Caracteristicas de los Sistemas OperativosPablo Macon
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionAbner Gerardo
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 CapasFani Calle
 
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uniPrototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uniRAUL CHIPANA LARICO
 
Comparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de DatosComparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de DatosVictor Zevallos
 
Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)José Toro
 
Herramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de InformaciónHerramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de Informaciónjgbd127
 

La actualidad más candente (20)

Documentación de sistemas
Documentación de sistemasDocumentación de sistemas
Documentación de sistemas
 
Documentación base de datos
Documentación base de datos  Documentación base de datos
Documentación base de datos
 
Diagrama de casos de usos
Diagrama de casos de usosDiagrama de casos de usos
Diagrama de casos de usos
 
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptxMONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelas
 
Fundamentos de las bases de datos
Fundamentos de las bases de datosFundamentos de las bases de datos
Fundamentos de las bases de datos
 
Caracteristicas de los Sistemas Operativos
Caracteristicas de los Sistemas OperativosCaracteristicas de los Sistemas Operativos
Caracteristicas de los Sistemas Operativos
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacion
 
Casos De Uso
Casos De UsoCasos De Uso
Casos De Uso
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 
Manual itil V3
Manual itil V3Manual itil V3
Manual itil V3
 
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uniPrototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
 
Comparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de DatosComparacion de Gestores de Base de Datos
Comparacion de Gestores de Base de Datos
 
Oracle
Oracle Oracle
Oracle
 
Ciclo de instrucción
Ciclo de instrucciónCiclo de instrucción
Ciclo de instrucción
 
Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)
 
Exposicion administración de centros de computo
Exposicion administración de centros de computoExposicion administración de centros de computo
Exposicion administración de centros de computo
 
Herramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de InformaciónHerramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de Información
 
Ensayo Cliente Servidor
Ensayo Cliente ServidorEnsayo Cliente Servidor
Ensayo Cliente Servidor
 
SQLite
SQLiteSQLite
SQLite
 

Similar a GuíA Para La OptimizacióN De Consultas

Similar a GuíA Para La OptimizacióN De Consultas (20)

Abd procesamiento consultas (parte1)
Abd procesamiento consultas (parte1)Abd procesamiento consultas (parte1)
Abd procesamiento consultas (parte1)
 
Clase 2 ciclo de vida bd ac
Clase 2 ciclo de vida bd acClase 2 ciclo de vida bd ac
Clase 2 ciclo de vida bd ac
 
Presentacion De Programa De Formacion
Presentacion De Programa De FormacionPresentacion De Programa De Formacion
Presentacion De Programa De Formacion
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 
Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
Trabajo ayudantia
Trabajo ayudantiaTrabajo ayudantia
Trabajo ayudantia
 
Bases de Datos II: El entorno
Bases de Datos II: El entornoBases de Datos II: El entorno
Bases de Datos II: El entorno
 
Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
01 introduccion (1)my sql
01 introduccion (1)my sql01 introduccion (1)my sql
01 introduccion (1)my sql
 
Reporting Services
Reporting ServicesReporting Services
Reporting Services
 
Creación de base de datos
Creación de base de datosCreación de base de datos
Creación de base de datos
 
Optimizacion de Consultas en SQL (Base datos).ppt
Optimizacion de Consultas en SQL (Base datos).pptOptimizacion de Consultas en SQL (Base datos).ppt
Optimizacion de Consultas en SQL (Base datos).ppt
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3
33
3
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
 
3 diseño de-BD
3 diseño de-BD3 diseño de-BD
3 diseño de-BD
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 

Último

ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 

Último (20)

ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 

GuíA Para La OptimizacióN De Consultas

  • 1. “ Guía para la Optimización de Consultas en una Base de Datos Relacional Utilizando SQL” UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD DE CIENCIAS EXACTAS Y TECNOLOGIA Carrera de Ingeniería Informática Elaborado por: Ubaldo Pérez Ferreira Proyecto de Grado Proyecto de Grado para optar al Título de: Licenciatura en Ingeniería Informática Santa Cruz de la Sierra – Bolivia
  • 2.
  • 3.
  • 4.
  • 5.
  • 6. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas El Modelo de Datos Relacional (MDR) fue propuesto por Codd en 1970 . El MDR, esta fundamentado en la teoría matemática de conjuntos, de ahí, su potencial. Los conjuntos en el MDR son denominados Dominios (D). Un Dominio es un conjunto de valores escalares del mimo tipo. La única herramienta de estructura de datos usada por el MDR es una Relación (R) .
  • 7.
  • 8. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Un Lenguaje de Consulta Relacional sirve para que el usuario solicite información de la Base de Datos Relacional. Normalmente son de alto nivel, es decir con alguna similitud al lenguaje natural, lo que permite que sea fácil de aprender y de manipular por cualquier usuario L R1 R2 R3
  • 9.
  • 10. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Expresión Algebraica . Las operaciones del Algebra Relacional, usualmente están incluidas dentro de una Expresión Algebraica; las mismas que especifican la manera en que los datos requeridos deben ser recuperados de las Relaciones.  A,B,X (  X=“aa” (R1 XR2)) El resultado de una Expresión Algebraica es uma nueva Relación Aplicando la Expresión Algebraica ss bb uu aa R2 Y X 234 123 ccc 213 222 bbb R1 234 111 aaa C B A aa 123 ccc aa 222 bbb aa 111 aaa X B A
  • 11. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Árbol Algebraico . Las operaciones del Algebra Relacional, pueden ser representada en su totalidad en un Árbol Algebraico.  A,B,X (  X=“aa” (R1 XR2)) R1 R2  X=“aa”  A,B,X X 1ro. Producto Cartesiano 2do. Seleccionar las tuplas con X=“aa” 3ro. Proyectar A,B,X Lectura de abajo hacia arriba Herramienta Básica utilizada por los SGBD.
  • 12.
  • 13. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Un Sistema de Gestión de Bases de Datos (SGBD o DBMS ‘Database Management System”) es el conjunto de programas que permiten Definir, Manipular y Utilizar la información que contienen las Bases de Datos, entre otras tareas (Autorizaciones, Seguridad,…) SGBD
  • 14. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Programa de Aplicación Esquema de BD Consulta de Usaurio Tabla de Autorizacion Adm. de Accesos Concurrente Compilador LDD Procesador de Consultas Gestor De Base de Datos Gestor de Archivos Datos + Index Diccionario de Datos Compilador LMD Lenguaje SQL Control de Acceso
  • 15. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas El Proceso de Optimización de Consultas Datos + Index Diccionario de Datos Traductor (Parser) Árbol Relacional Plan de Ejecución Consulta SQL Resultado de la Consulta Optimizador de Consulta Motor de Ejecucion Reglas de Transformación de Expresiones Estadísticas de las Relaciones. Medidas de Costos.
  • 16. Parte II - Fundamentos Teóricos An á lisis de la Consulta Selección de Caminos de Accesos Selección de Ordenes JOIN Uso de Tablas Temporales Selección del Plan de Ejecución Fases del Optimizador ASE Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas El Optimizador SYBASE (Adaptive Server Enterprice -ASE) , esta basado en costos, creado en 1979 para el SGBD SYSTEM R.
  • 17. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta La Guía es una herramienta de propósito general, en algunos casos puede ser muy compleja o muy simple. Consideraciones. No esta orientada a un SGBD en particular La Guía debe ser vista como una herramienta m a s en el proceso de Optimización de Consultas. La Guía puede ser utilizada este o no poblada la Base de Datos. La guía esta orientado a cierto de tipo de usuarios como ser: Administradores de Base de Datos, Diseñadores de Base de Datos y Programadores de Aplicaciones..
  • 18. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Paso 1 Generar el Plan de Ejecución Paso 2 Reescribir la Consulta ¿Reescribir la Consulta? Paso 1 Generar el Plan de Ejecución Paso 3 Crear y Gestionar Índices ¿Ajustar y/o Crear Índices? Paso 1 Generar el Plan de Ejecución Paso 4 Ajustar el Esquema de la BD ¿Ajustar el Esquema de BD Paso 1 Generar el Plan de Ejecución SI NO SI SI NO NO Estadísticas Obsoletas? Análisis del Plan de Ejecución Expresiones SARG Orientar al uso de INDICES Existentes? Crear INDICES? Ajustar los Existentes Desnormalizar Adicionar Atributos Derivados Continua
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Esquema de la BD Valores. inv_header inv_detalle tiene 1 N create table inv_header ( nro_tran serial not null primary key , nro_doc integer not null , fecha date not null , … create table inv_detalle ( nro_tran integer not null , ing_egr char(1) not null , orden integer not null , cod_tv smallint not null , nro_valor integer … foreign key (nro_tran) references inv_header, primary key (nro_tran,ing_egr,orden,cod_tv,nro_valor), 95.21 3,840,140 26 inv_detalle 2.20 36,162 64 inv_header Tamaño de la Tabla (Mbyte) Numero de Filas Tamaño de la tabla (Bytes) Nombre Tabla
  • 32. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 1. QUERY: ------ select * from inv_header where nro_tran=100 or nro_tran=300 Estimated Cost: 2 Estimated # of Rows Returned: 2 1) inv_header: SEQUENTIAL SCAN Filters: (inv_header.nro_tran = 100 OR inv_header.nro_tran = 300 ) select * from inv_header where nro_tran=100 or nro_tran=300 Resultado Tiempo: 4.1 min. Método de Acceso: FULL TABLE SCAN Listar el detalle de valores de las transacciones numero 100 y 300. Análisis Existe un índice sobre el campo nro_tran, sin embargo no fue utilizado, esto debido a que la cláusula WHERE no es SARGABLE. PASO 1.
  • 33. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 1. QUERY: ------ select * from inv_header where nro_tran=1 union select * from inv_header where nro_tran=300 Estimated Cost: 2 Estimated # of Rows Returned: 2 1) inv_header: INDEX PATH (1) Index Keys: nro_tran Lower Index Filter: inv_header.nro_tran = 100 Union Query: ------------ 1) inv_header: INDEX PATH (1) Index Keys: nro_tran Lower Index Filter: inv_header.nro_tran = 300 Solución. Reescribir la consulta, para que la cláusula WHERE sea SARGABLE, se utilizo la Regla 9 del paso 2. select * from inv_header where nro_tran=100 union select * from inv_header where nro_tran=300 Resultado. Tiempo: 0.01 min. Método de Acceso: INDEX PATH PASO 2. PASO 1.
  • 34. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 2. QUERY: ------ select * from inv_detalle where cod_tv=2 and nro_valor=700021 Estimated Cost: 2 Estimated # of Rows Returned: 1 1) inv_detalle: SEQUENTIAL SCAN Filters: (inv_detalle.cod_tv = 2 AND inv_detalle.nro_valor = 700021 ) select * from inv_detalle where cod_tv=2 and nro_valor=700021 Listar el detalle de movimiento de la factura numero 700021 . Resultado. Tiempo: 8.3 min. Método de Acceso: FULL TABLE SCAN Análisis No existe un índice sobre los campos cod_tv y nro_valor, esta situación hace que el SGBD se decida por un acceso FULL TABLE SCAN. PASO 1.
  • 35. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 2. QUERY: ------ select * from inv_detalle where cod_tv=2 and nro_valor=700021 Estimated Cost: 2 Estimated # of Rows Returned: 1 1) informix.inv_detalle: INDEX PATH (1) Index Keys: cod_tv nro_valor Lower Index Filter: (informix.inv_detalle.cod_tv = 2 AND informix.inv_detalle.nro_valor = 700021 ) Análisis. Se observa que la cláusula WHERE es de tipo SARGABLE, sin embargo la tabla inv_detalle no cuenta con los índices adecuado. Solución. Se procedió a crear un índice: CREATE INDEX idx_inv_detalle1 ON inv_detalle(cod_tv,nro_valor) . Resultado. Tiempo: 0.01 min. Método de Acceso: INDEX PATH PASO 3. PASO 1.
  • 36. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 3. QUERY: ------ select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and year(fecha)=&quot;2004&quot; and month(fecha)=&quot;01&quot; Estimated Cost: 4 Estimated # of Rows Returned: 1 1) inv_header: SEQUENTIAL SCAN Filters: (YEAR(inv_header.fecha )=2004 AND MONTH(inv_header.fecha )=1 ) 2) informix.inv_detalle: INDEX PATH (1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor Lower Index Filter: inv_detalle.nro_tran=inv_header.nro_tran NESTED LOOP JOIN select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and year(fecha)=&quot;2004&quot; and month(fecha)=&quot;01&quot; Listar el detalle de movimiento de valores correspondiente al mes de enero del 2004. Resultado Tiempo: 10.4 min. Método de Acceso: FULL TABLE SCAN Análisis Se observa que la tabla inv_detalle no tiene el indice adecuado, razón por la cual el SGDB elige el FULL TABLE SCAN. PASO 1.
  • 37. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 3. QUERY: ------ select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and year(fecha)=&quot;2004&quot; and month(fecha)=&quot;01&quot; Estimated Cost: 4 Estimated # of Rows Returned: 1 1) inv_header: SEQUENTIAL SCAN Filters: ( YEAR(inv_header.fecha )=2004 AND MONTH(inv_header.fecha )= 1 ) 2) informix.inv_detalle: INDEX PATH (1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor Lower Index Filter: inv_detalle.nro_tran=inv_header.nro_tran NESTED LOOP JOIN Solución. Se creo el índice en la tabla inv_header utilizando el campo fecha. CREATE INDEX idx_inv_header1 ON inv_header(fecha) Resultado. Tiempo: 10.4 min. Método de Acceso: FULL TABLE SCAN Análisis El plan no varia ni en tiempo y ni en el tipo de acceso, pese a que se creo el índice. El problema esta en la presencia de funciones en la cláusula WHERE. PASO 3. PASO 1.
  • 38. Parte III – Propuesta y Aplicación de la Guía Consideraciones Previa Descripción de los Pasos de Guía Aplicación de la Guía Propuesta Ejemplo 1. Ejemplo 2. Ejemplo 3. Optimización Consulta Nro. 3. QUERY: ------ select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and fecha between &quot;01/01/2004&quot; and &quot;31/01/2004&quot; Estimated Cost: 4 Estimated # of Rows Returned: 1 1) inv_header: INDEX PATH (1) Index Keys: fecha Lower Index Filter: inv_header.fecha >= 01/01/2004 Upper Index Filter: inv_header.fecha <= 31/01/2004 2) inv_detalle: INDEX PATH (1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor Lower Index Filter: inv_detalle.nro_tran = inv_header.nro_tran NESTED LOOP JOIN Solución. Reescribir la consulta, para que la cláusula WHERE sea SARGABLE, se utilizo la Regla 11 del paso 2. select inv_detalle.* from inv_header,inv_detalle where inv_header.nro_tran=inv_detalle.nro_tran and fecha between &quot;01/01/2004&quot; and &quot;31/01/2004&quot; Resultado. Tiempo: 0.01 min. Método de Acceso: INDEX PATH PASO 2. PASO 1.
  • 39.
  • 40.
  • 43. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Estadísticas de la Base de Datos. Además, se utiliza información acerca de los índices Volver
  • 44. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Medidas de Costos . El costo de un Plan de Ejecución se hace en función de la cantidad de CPU utilizada y de la cantidad de páginas de disco rescatadas . b.1. Búsqueda Lineal (Full Table Scan o Table Scan) b.2. Índice Primario, igualdad en la clave . b.3. Índice Secundario, igualdad . Volver La mas costosa La mas eficiente +/- eficiente
  • 45. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Reglas de Equivalencias de Expresiones. Una regla de equivalencia permite transformar una expresion E1 en la otra E2, mientras se preserva la equivalencia . Aplicando las Reglas Volver
  • 46. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Se analiza cada tabla con el fin de reconocer los SARG (Search Argument-able, argumentos de búsqueda) Análisis de la Consulta. Un SARG limita el número de filas que satisfacen la consulta. (Atributos selectivos) x , y pertenecen a la misma tabla, z es foráneo. Volver x + 2 = 20 x = 20 - 2 x LIKE '%tern' x LIKE 'pat%' x NOT IN (4, 5, 6) x IN (4, 5, 6) x = y x = z x = 4 OR y = 5 x > 25 x IS NOT NULL x IS NULL x <> 10 x = 10 Expresion Non SARG Expresiones SARG
  • 47. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Es hacer calzar las cláusulas SARG con los índices existentes en la BD, además compara los costos versus un FULL TABLE SCAN . Selección de Índices. ASE usa las estadísticas de distribución de datos de las Estadísticas de la BD, para estimar el costo de los caminos de acceso. Volver El objetivo general es calzar un SARG con un índice para evitar un FULL TABLE SCAN .
  • 48. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas … FROM Tabla1, Tabla2,Tablan Selección de Ordenes JOIN. La cláusula FROM no dicta el orden en el cual las tablas deben ser procesadas . Se evalúa todas las permutaciones razonables y se estima el costo total en términos de tiempo de E/S. Volver El escenario de costo en el peor caso para un join es el que implementa un FULL TABLE SCAN en ambas tablas . 99.999% 148512 20922789888000 16 99.7% 11088 3628800 10 98.3% 6048 362880 9 92.5% 3024 40320 8 73.3% 1344 5040 7 30% 504 720 6 Ahorro Método Optimizado N! Número de Tablas
  • 49. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Dado que las tablas temporales producen un procesamiento adicional y consumo de E/S el optimizador debe decidir si debe crear o no estas tablas. Uso de Tablas Temporales. Para el caso de la cláusula GROUP BY, siempre se debe crear una tabla temporal para realizar el agrupamiento. Para el caso de la cláusula DISTINCT, se debe crear una tabla que ordene los valores y elimine los duplicados. Si existe un índice único no es necesario. Para el caso de la cláusula ORDER BY, la utilización de una tabla dependerá de los índices sobre la tabla. Volver
  • 50. Parte II - Fundamentos Teóricos Modelo Relacional Lenguajes Relacional Sistema de Base de Datos El Proceso de Optimización de Consultas El Optimizador de Consultas Sin embargo, no siempre el Optimizador seleccione el mejor Plan. Selección del Plan de Ejecución. De todos los Planes generados por ASE, la selección del Plan de Ejecución Optimo, esta determinado por la solución que tenga el menor costo estimado. ¿Se consideró los índices existentes en cada tabla o se está realizando un FULL TABLE SCAN? ¿Se utilizan tablas temporales para procesar la consulta ? ¿Cuales son los órdenes de JOIN que utiliza el optimizador para resolver la consulta ? ASE y los demás Optimizadores, proporciona una herramienta llamada SHOWPLAN, que devuelve al usuario un detalle del plan de ejecución , en la cual se puede verificar que: Volver