optimizacion de consultas

29
Procesamiento y Optimiz de Consultas SQL Universidad Mariano Gálvez De Guatemala Grupo 4 Eduardo Otoniel Tumax Sulecio Sergio Aníbal Argueta Paredes Álvaro Antonio Álvarez Juan Diego Hurtarte Hicho

Upload: oto-tumax

Post on 27-Jun-2015

11.526 views

Category:

Documents


1 download

DESCRIPTION

Optimizacion de consultas, Curso Diseño De Base de Datos, Universidad Mariano Galvez De Guatemala

TRANSCRIPT

Page 1: Optimizacion De Consultas

Procesamiento y Optimización de Consultas SQL

Universidad Mariano Gálvez De Guatemala

Grupo 4

Eduardo Otoniel Tumax Sulecio Sergio Aníbal Argueta ParedesÁlvaro Antonio Álvarez   Juan Diego Hurtarte Hicho

Page 2: Optimizacion De Consultas

¿Cómo se resuelven las consultas?

Usuario

Parser

Optimizador

Generador De Código

Procesador Del DBMS

Datos

Datos Respuesta

Page 3: Optimizacion De Consultas

Estrategias usuales de losoptimizadores

● Proceso detallado de Optimización. 

● Optimización Heurística 

Basada en equivalencia de las expresión del álgebra y ciertas estrategias básicas para limitar el tamaño de los resultados

● Optimización Sql 

Basada en estimaciones y datos del catálogo que permiten seleccionar un mejor plan de acceso.

Page 4: Optimizacion De Consultas

Proceso de Optimización

Parser

Traductor Algebra

Relacional

Generador de Planes Logicos

Generador De Planes

Especificos

Procesador Del DBMS

Generador De Código

Page 5: Optimizacion De Consultas

Conceptos● Generación del Algebra (Árbol Canónico)• Arbol de una expresión relacional

• Representación de un query en SQL previo a su optimización

• las hojas representan las relaciones de entrada

• los nodos internos representan operadores del álgebra relacional

• su ejecución supone que los operadores se aplicarán tan pronto como sus operandos estén disponibles, sustituyendo el nodo por la relación resultante

• la ejecución termina al aplicarse el operador representado por el nodo raíz

● Generación de planes lógicos (Optimización Heurística) 

Implica la aplicación de determinadas estrategias (heurísticas) y consultas al catálogo para tamaños de las relaciones para transformar el árbol original.

Page 6: Optimizacion De Consultas

Ejemplo 1Resolver esta consulta sobre las tablas: –empleados(nombre,edad,salario,depto) –

departamentos(nroD,nombreD,piso,gerente)

Page 7: Optimizacion De Consultas

Arbol De Consulta

• Arbol de consulta que es una estructura de árbol que corresponde a una expresión del álgebra relacional en el que las tablas se representan como nodos hojas y las operaciones del álgebra relacional como nodos intermedios.

Page 8: Optimizacion De Consultas

Arbol De Consulta• Por ejemplo, para la consulta: 

SELECT numerop, numd, apellido, dirección, fechan FROM proyecto, departamento, empleado WHERE numd=numerod AND nssgte=nss AND lugarp='Santiago'; un árbol de consulta sería:  

Page 9: Optimizacion De Consultas

Traducción a SQL

• Una funcionalidad importante implementada ha sido la traducción de las consultas a SQL. Una vez más gracias al diseño de las clases encargadas de gestionar los árboles, ha bastado con recorrerlos implementando métodos capaces de traducir cada una de las operaciones del álgebra relacional a su equivalente en SQL. También se ha abordado el tema de la creación de vistas puesto que es una parte importante en la formación que el alumno recibe en la asignatura de Ficheros y Bases de Datos y dependiendo de la complejidad de las consultas ayuda al usuario a aclararse durante su estudio.

Page 10: Optimizacion De Consultas

Traducción de consultas SQL a Álgebra Relacional

Bloque de consulta

– Una única expresión select-from-whereincluyendo group-by, order-by, having y los operadores (max, min, count, avg y sum)

Page 11: Optimizacion De Consultas

Optimización de consultas SQL

• Uno de los temas más importantes en el desarrollo de cubos y reportes es el tiempo de procesamiento y ejecución. Cada día se necesita procesar mayor cantidad de datos y obtener de manera más rápida y precisa la información. Muchos de los problemas de rendimiento se deben entre otras cosas  al hardware, al software, al motor de base de datos y por sobre todo al diseño, índices y mala formulación de consultas SQL.

Page 12: Optimizacion De Consultas

A la hora de diseñar la base de datos

Las tablas normalizadas permiten reducir al mínimo el espacio ocupado por nuestra base y permiten asegurar la consistencia de la información al mismo tiempo que son muy rápidas para la realización de transacciones, pero generan un mayor tiempo de demora a la hora de consultarlas.

Ajustar al máximo el tamaño de los campos ayuda a no desperdiciar espacio.

Eliminar todo campo que no sea de utilidad ya que por más que  no contenga datos genera retrasos.

Page 13: Optimizacion De Consultas

Que pasa con los índices

• Los índices son campos que permiten la búsqueda a partir de dicho campo a una velocidad notablemente superior.

• Los campos que se recomiendan indexar son:

• o   Claves Primarias• o   Claves Foráneas• o   Campos por los cuales se realizaran búsquedas• o   Campos por los cuales se va a ordenar

• Siempre conviene indexar tablas con gran cantidad de registros y que van a ser consultadas intensamente.

Page 14: Optimizacion De Consultas

Indexación

Page 15: Optimizacion De Consultas

Acerca de la formulación de la consultas:

• A la hora de ejecutar una consulta SQL la forma en que esta es expresada afecta directamente al motor de BD, pequeños cambios pueden significar la ganancia de muchos segundos o minutos que el usuario debe esperar al momento de ejecutar la consulta. Algunas recomendaciones son:

• No utilizar SELECT * por que el motor  debe leer primero la estructura de la tabla antes de ejecutar la sentencia.

• Seleccionar solo aquellos campos que se necesiten, cada campo extra genera tiempo extra.        

Page 16: Optimizacion De Consultas

Acerca de la formulación de la consultas:• Utilizar Inner Join , left join , right join, para unir las tablas en lugar

del where, esto permite que a medida que se declaran las tablas se vallan uniendo mientras que si utilizamos el where el motor genera primero el producto cartesiano de todos los registros de las tablas para luego filtrar las correctas, un trabajo definitivamente lento.

• Especificar el alias de la tabla delante de cada campo definido en el select, esto le ahorra tiempo al motor de tener que buscar a que tabla pertenece el campo especificado.

• Evitar el uso de Cast. Y formulas dentro de las consultas, cada formula y casteo retrasan el motor considerablemente.

• Select CAST(goles as varchar(30))• from jugadores• where id = 100

• ,

Page 17: Optimizacion De Consultas

Optimización de Consultas SQL

EMPAREJAMIENTOS EN WHERE VS. EMPAREJAMIENTOS EN EL FROM

ORDEN DE PROCESAMIENTO DE UNA CONSULTA MULTITABLA

COMPOSICIONES EXTERNAS (EN EL WHERE Y EN EL FROM)

QUERY PERFORMANCE

Page 18: Optimizacion De Consultas

COMPOSICIONES EN EL WHERE VS. COMPOSICIONES EN EL FROM

• Debido al orden de procesamiento de una consulta multitabla el motor de BD se ve beneficiado si las composiciones son realizadas en el FROMa través de INNER JOIN o alguna de sus variantes (LEFT OUTER JOIN, RIGHT OUTER JOIN). Esto se debe a que el motor al procesar una consulta SQL lo hace en este orden:

• Realiza el producto cartesiano de las tablas en el FROM

• Si existe cláusula WHERE aplica la condición de búsqueda

• Para las filas restantes calcula el valor de cada elemento en la lista del SELECT

• Si existe un SELECT DISTINCT elimina las filas duplicadas

• Si existe un ORDER BY ordena el resultado

Page 19: Optimizacion De Consultas

• SELECT F.numFactura,C. CliNom, F.Monto

•                 FROM Factura F INNER JOIN Cliente C ON F.codcli=C.codcli

Si nosotros realizamos la composición directamente en el FROM evitamos utilizar la cláusula WHERE

Page 20: Optimizacion De Consultas

Si nuestra composición entre tablas requiere más de un campo y más de dos tablas la sintaxis sería la siguiente:

• SELECT F.numFactura, C.cliNom, F.Monto, V.venNom

• FROM Factura F INNER JOIN Cliente C ON F.tipoDoc=C.tipoDoc     AND F.numDoc=C.numDoc INNER JOIN Vendedor ON F.codVen=V.codVen

Page 21: Optimizacion De Consultas

COMPOSICIONES EXTERNAS• Al realizar composiciones internas o INNER JOIN

entre dos tablas, los registros que no se correspondan en ambas tablas son eliminados de la lista de resultados, si yo no deseo que se eliminen los registros de una o ambas tablas aunque queden desemparejados debo realizar composiciones externas. Por ejemplo:

Page 22: Optimizacion De Consultas

Al realizar una composición externa podría recuperar todo el conjunto de resultados, las composiciones

externas dependen del orden en el que se listen las tablas:

• SELECT TC.Coche, TM.marca•  FROM TCOCHES TC RIGHT

OUTER JOIN TMARCAS TM ON TC.marca=TM.codigo

Page 23: Optimizacion De Consultas

QUERY PERFORMANCE

• Buenas prácticas para mejorar nuestras consultas SQL

• Realizar las composiciones en el FROM

• Tener en cuenta el orden en el que enunciamos las tablas en el FROM

• Uso de funciones de T-SQL

• Evitar el uso de SELECT *

• Evitar el SELECT DISTINCT y el ORDER BY

• Estas fueron unas breves recomendaciones a tener en cuenta a la hora de generar nuestras sentencias SQL, más adelante seguiremos con este tema, por ejemplo el uso de subconsultas, consultas en el FROM, uso de IF y CASE para condiciones, etc. las cuales son fundamentales a la hora de realizar nuestros procesos ETL.

Page 24: Optimizacion De Consultas

Optimización por Heurísticas

• Cambiar la consulta original por otra equivalente de

• forma de minimizar los resultados intermedios.

 

● Pueden existir varias alternativas.

  ● Se basa en aplicar equivalencias de los operadores del álgebra de forma que:  

• 1. Las selecciones se apliquen lo antes posible.

• 2. Las ramas izquierdas de los join sean más chicas que las derechas.

Page 25: Optimizacion De Consultas

Optimización Heurística

Aplicación de reglas de transformación y heurísticas para modificar la representación interna de una consulta (Álgebra Relacional o Árbol de consulta) a fin de mejorar su rendimiento

• Varias expresiones del Álgebra Relacional pueden corresponder a la misma consulta

• Lenguajes de consulta, como SQL permiten expresar una misma consulta de muchas formas diferentes, pero el rendimiento no debe depender de cómo sea expresada la consulta

Page 26: Optimizacion De Consultas

• El Analizador Sintáctico genera árbol de consulta inicial

– sin optimización ejecución ineficiente

• El Optimizador de Consultas transforma el árbol de consulta inicial en árbol de consulta final equivalente y eficiente

Aplicación de reglas de transformación guiadas por reglas heurísticas

Conversión de la consulta en su forma canónica equivalente

Page 27: Optimizacion De Consultas

El Optimizador tiene un conjunto de técnicas para realizar cada operación

– Ejemplo: técnicas para implementar la operación de Restricción – Búsqueda Lineal– Búsqueda Binaria– Empleo de Índice Primario o Clave de Dispersión– Empleo de Índice de Agrupamiento– Empleo de Índice Secundario

•¿Cómo elige el Optimizador las técnicas adecuadas en cada caso?

Page 28: Optimizacion De Consultas

Optimización

Información Estadística(diccionario de datos)

Información sobre la interdependencia entre las operaciones de bajo nivel

Elección de varias técnicascandidatas para cada operación

OPTIMIZADOR

Page 29: Optimizacion De Consultas

Ejemplo de optimización heurística