Sei sulla pagina 1di 33

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computacin ADMINISTRACION DE BASES DE DATOS

Tema 5: Procesamiento y Optimizacin de Consultas

Mercy Ospina Torres Mayo de 2010

Centro de investigacin en Sistemas de Informacin CISI


Pg. 1

Contenido
CONTENIDO.......................................................................................................................... 1 1 2 3 INTRODUCCIN ............................................................................................................ 2 PROCESAMIENTO DE CONSULTAS............................................................................ 3 TRADUCCIN DE CONSULTAS SQL AL ALGEBRA RELACIONAL .......................... 4
3.1.1 Arboles de ejecucin................................................................................................................................ 7

3.2 Axiomas o reglas del Algebra Relacional ...............................................................................9 3.2.1 Definicin de los Axiomas........................................................................................................................ 9 3.2.2 Tamao del espacio de posibilidades de ejecuciones de una consulta lgica .................................. 10

4
4.1 4.2

TCNICAS PARA OPTIMIZAR CONSULTAS ........................................................... 11


Optimizacin basada en heursticas ................................................................................... 11 Factor de selectividad: ..................................................................................................... 14

4.3 Operadores fsicos y clculo de costos ................................................................................ 16 4.3.1 Informacin del catlogo del sistema utilizada para estimar costos. ................................................ 16 4.3.2 Clculo del espacio en disco requerido por una relacin. .................................................................. 17 4.3.3 Operacin Seleccin .............................................................................................................................. 18 4.3.4 Operacin ordenamiento ...................................................................................................................... 20 4.3.5 Operacin proyeccin............................................................................................................................ 22 4.3.6 Operacin Reunin (Join) ...................................................................................................................... 23 4.3.7 rbol de ejecucin fsico........................................................................................................................ 26 4.4 Evaluacin de expresiones ................................................................................................ 27 4.4.1 Materializacin....................................................................................................................................... 27 4.4.2 Encauzamiento (Pipeline) ...................................................................................................................... 27 4.4.3 Ejercicio de Ejemplo............................................................................................................................... 28

BIBLIOGRAFA ........................................................................................................... 32

Pg. 1

Procesamiento y Optimizacin de Consultas

1 Introduccin
La optimizacin representa tanto un reto como una oportunidad para los sistemas relacionales, un reto ya que se requiere que un sistema de esta naturaleza tenga un desempeo aceptable, y una oportunidad debido a que el enfoque relacional permite que las expresiones relacionales estn en un nivel semntico que permita optimizarlas. De lo contrario, en sistemas donde las peticiones de los usuarios son expresadas en un nivel semntico ms bajo, cualquier optimizacin debe ser realizada por el usuario de forma manual, por lo que si el usuario toma una mala decisin no hay nada que el sistema pueda hacer para mejorar las cosas. La optimizacin llevada a cabo por el sistema se denomina automtica y tiene como ventaja que los usuarios no tienen que preocupase por formular las consultas de la mejor manera, ya que existe la posibilidad real de que el optimizador pueda hacerlo mejor que un usuario humano, por varias razones entre las que se encuentran las siguientes: 1. Un buen optimizador cuenta con una gran cantidad de informacin disponible que por lo general no tienen los usuarios humanos; en particular informacin estadstica como: a. Cantidad de valores de un dominio b. Cantidad actual de tuplas en cada relacin base c. Cantidad actual de valores distintos en cada atributo de estas relaciones d. Cantidad de veces que estos valores se dan en estos atributos. Toda esta informacin se mantiene en el catlogo del sistema, y con ella el optimizador es capaz de valorar la eficiencia de cualquier estrategia dada para implementar una peticin y por tanto ms probable que pueda seleccionar la implementacin ms eficiente. 2. Si las estadsticas de la base de datos cambian con el tiempo, tal vez sea necesario seleccionar una estrategia diferente, es decir realizar una reoptimizacin, la cual es trivial en los sistemas relacionales ya que simplemente involucra un reprocesamiento de la peticin original 3. El optimizador es un programa al que no se le agota la paciencia, por lo que literalmente puede considerar cientos de estrategias diferentes para una peticin, en cambio un usuario humano es probable que solo llegue a considerar ms de tres o cuatro. 4. En el optimizador se han implementado las habilidades y servicios de los mejores programadores humanos. Como consecuencia, tiene el efecto de poner a disposicin de todos los usuarios estas habilidades y servicios. Entonces el propsito del optimizador es seleccionar una estrategia eficiente para la evaluacin de una expresin relacional dada. En el desarrollo de este tema se explicara el proceso de optimizacin y algunos de los principios y tcnicas fundamentales involucrados en este. Se muestra un proceso muy importante que es el de transformacin de una expresin o reescritura de consultas, por ltimo es importante aclarar que el trmino optimizacin es un poco engaoso, ya que no hay ninguna garanta de que la estrategia elegida en realidad sea ptima en cualquier sentido, lo nico que se sabe con certeza es que es una mejora de la versin original.

Pag. 2

Procesamiento y Optimizacin de Consultas

2 Procesamiento de consultas
El procesamiento de consultas hace referencia a una serie de actividades que tienen como objetivo la extraccin de datos de una Base de Datos (Silberschatz, Korth, & Sudarshan, 2006). En la figura 1 se muestran los pasos involucrados en el procesamiento de una consulta, los pasos bsicos son: 1. Anlisis y traduccin 2. Optimizacin 3. Evaluacin

Consulta de alto nivel

Analizador y traductor

Expresin del algebra relacional

Optimizador Diccionario de Datos Resultado de la consulta Motor de Evaluacin Plan de Ejecucin

Estadsticas de los datos

Datos

Figura 1 Pasos en el procesamiento de la consulta (Silberschatz, Korth, & Sudarshan, 2006)

Anlisis: Una consulta de alto nivel debe ser en primer lugar analizada. El analizador hace un anlisis lxico, un anlisis sintctico y una validacin: Anlisis lxico: Identifica los elementos del lenguaje como por ejemplo, las palabras reservadas de SQL, si estn bien formados los nombres de los atributos y relaciones en el texto de la consulta. Anlisis sintctico : Comprueba la sintaxis de la consulta de acuerdo a las reglas sintcticas del lenguaje de consulta. Validacin: Comprueba que los nombres de las relaciones, atributos sean vlidos semnticamente dentro del esquema de la base de datos sobre la cual se realiza la consulta y si los tipos de datos se estn usando correctamente.

Pag. 3

Procesamiento y Optimizacin de Consultas Traductor: Crea una representacin interna de la consulta, mediante una estructura de rbol denominado rbol de consulta, el cual est basado en el lgebra relacional extendido. Entonces la primera accin que el sistema tiene que realizar para procesar una consulta es traducirla a su formato interno, si la consulta esta expresada en trminos de una vista la fase de traduccin sustituye todas las referencias a la vista por las expresiones que las definen. Optimizacin: El SMBD debe desarrollar una estrategia de ejecucin para obtener el resultado de la consulta. Ya que una consulta puede disponer de muchas estrategias distintas, basadas en el lgebra relacional, y cada operador del algebra relacional puede tener varias implementaciones fsicas. El optimizador debe determinar la estrategia ms adecuada, y especificar completamente como evaluar la consulta, indicando las instrucciones, y que estructuras adicionales usar (ndices). Motor de ejecucin: recibe el plan de evaluacin, lo ejecuta y devuelve la respuesta de la consulta. El trmino optimizador resulta en realidad inapropiado ya que en algunos casos el plan de ejecucin elegido no resulta ser la estrategia ms optima, sino una estrategia razonablemente eficiente para ejecutar la consulta, ya que por lo general la b squeda de la estrategia ms ptima consume demasiado tiempo, excepto en el caso de consultas muy sencillas.

3 Traduccin de consultas SQL al algebra relacional


En la prctica SQL es el lenguaje de consultas que se utiliza en la mayora de los SMBDR comerciales. Las consultas SQL se descomponen en bloques de consulta que forman las unidades bsicas que pueden traducirse al lgebra relacional. Un bloque est compuesto por una nica expresin SELECT FROM WHERE y tambin clausulas GROUP BY y HAVING si las hubiere. Por lo tanto las consultas anidadas se identifican como bloques independientes y se ejecutan de manera independiente (Elmasri & Navathe, 2007). Debido a que SQL incluye operadores de agregacin como MAX, MIN, SUM y COUN T, estos tambin deben ser incluidos en el lgebra relacional extendida. En general una consulta SQL es de la forma SELECT <Lista de atributos> FROM <Lista de tablas> WHERE <Lista de condiciones> Donde la lista de tablas representa las tablas o archivos involucrados en la consulta, las

), las condiciones de igualdad de atributos sobre diferentes tablas (o la operacin JOIN) representa operaciones JOIN del algebra relacional, y la lista de atributos representa operaciones PROJECT del AR.
condiciones sobre atributos de las tabla representan operaciones SELECT del AR (

Pag. 4

Procesamiento y Optimizacin de Consultas Por ejemplo, veamos la siguiente consulta SELECT E.Apellido1, E.Nombre, E.Sueldo FROM Empleado E, Departamento D WHERE D.nombre =ventas and E.sueldo > 2000 and E.CodDpto = D.CodDpto; Se puede traducir de la siguiente manera Se hace la seleccin sobre las tablas

Se hace la reunin natural de las tablas temporales

Por ultimo se hace una proyeccin de los atributos solicitados

La expresin completa queda de la siguiente manera

Las expresiones SQL anidadas dan como resultado tantas expresiones del AR como anidamentos tenga la consulta, por ejemplo. SELECT Apellido1, Nombre, Sueldo FROM Empleado WHERE Sueldo > ( SELECT MAX (Sueldo) FROM Empleado WHERE Dno = 5); Esta consulta incluye una subconsulta anidada por lo tanto es descompuesta en dos bloques SELECT MAX (Sueldo) FROM Empleado WHERE Dno = 5 SELECT Apellido1, Nombre, Sueldo FROM Empleado WHERE Sueldo >c Donde c es el resultado del bloque interno. Podramos traducir los bloques a expresin del algebra relacional extendida.

C TMAX Sueldo (Dno=5 (Empleado)) Y

El optimizador seleccionar un plan para cada bloque, lo cual en algunos casos sera ms sencillo de optimizar si el optimizador tuviera que optimizar un solo plan.

Pag. 5

Procesamiento y Optimizacin de Consultas Estas consultas en AR aun son declarativas o se denominan planes de ejecucin lgicas, ya que aunque son ms detalladas no especifican todava como obtener los datos desde las estructuras de almacenamiento, este ltimo es el plan de ejecucin fsico, el cual se explicar detalladamente en la optimizacin basada en costos. Existen diferentes maneras de convertir una consulta SQL a una expresin del AR. A continuacin se mostrar un mtodo para esta traduccin utilizando el concepto de rboles, por lo que en primer lugar se definirn los conceptos necesarios para la realizacin del proceso de traduccin.

Pag. 6

Procesamiento y Optimizacin de Consultas

3.1 Arboles de ejecucin


3.1.1 rbol de ejecucin lgico Con la consulta en algebra relacional se puede construir un rbol de ejecucin lgico de consulta el cual se construye de las hojas a la raz. Def: Un rbol de ejecucin P, es un rbol que tiene a lo ms paridad 2 (binario), por cada hoja del rbol corresponde una tabla, y cada nodo interno representa a un operador del Algebra Relacional. Caso Base T Es un rbol binario lgico

Caso inductivo Si P1 y P2 son rboles lgicos y es un operador que pertenece a los operadores binarios {X, U, }, y cond es una condicin booleana.
P1
P2

con
d

cond
P2

Att

P1

P1

P1

Ejemplo: la siguiente consulta en AR

Apellido1, Nombre, Sueldo (Sueldo > c (Empleado))


Se traduce al siguiente rbol de ejecucin lgica

Apellido1, Nombre, Sueldo Sueldo > c

Empleado 3.1.2 rbol de ejecucin fsico

Es el mismo rbol de ejecucin lgico, pero en los nodos internos se cambian los operadores lgicos a alguno de sus correspondientes operadores fsicos

Pag. 7

Procesamiento y Optimizacin de Consultas 3.1.3 rbol de ejecucin lineal izquierdo

B es un rbol de ejecucin lineal izquierdo sii es un rbol de ejecucin y para cualquier nodo de aridad 2, el hijo derecho es una tabla. 3.1.4 rbol cannico

Sea S una expresin en SQL SELECT <Lista Atributos> FROM <Lista Tablas> WHERE <Condicin> Un rbol cannico para S es un rbol lineal izquierdo donde cada nodo binario corresponde al producto cartesiano sobre dos tablas o sobre un subrbol y una tabla, la raz a la proyeccin sobre la lista de atributos, seguida por un nodo seleccin con la condicin cond. Por ejemplo si la lista de tablas es T1 Tn, se tendr el siguiente rbol cannico
listaAtt cond X Tn X X T1 T2 T3

Planes de ejecucin lgic os


Dada una consulta hay generalmente distintos mtodos para obtener una respuesta, por ejemplo la consulta exterior anterior se puede ejecutar de las siguientes maneras

Y cada una de ellas representa un plan de ejecucin lgico distinto. Para construir los diferentes planes que representan una consulta en SQL, el SMBDR utiliza los axiomas del lgebra relacional.

Pag. 8

Procesamiento y Optimizacin de Consultas

3.2 Axiomas o reglas del Algebra Relacional


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 3.2.1 Cascada de selecciones Conmutatividad de la seleccin Cascada de proyecciones Distributividad de la proyeccin y la seleccin Conmutatividad del Join y del producto cartesiano Distributividad de la seleccin con respecto al join/producto cartesiano Distributividad de la proyeccin sobre el join/producto cartesiano Conmutatividad de la unin y la interseccin Asociatividad de la unin y la interseccin Distributividad de la seleccin con respecto a la unin o la interseccin. Distributividad de la proyeccin con respecto a la unin o la interseccin. Conversin del producto cartesiano en join. Definicin de los Axiomas Dadas las Relaciones R, R1 y R2 1. Cascada de selecciones

Donde c1, c2, , cn son condiciones booleanas 2. Conmutatividad de la seleccin

3. Cascada de proyecciones

4. Distributividad de la proyeccin y la seleccin

Si no

5. Conmutatividad del Join y del producto cartesiano

Pag. 9

Procesamiento y Optimizacin de Consultas 6. Distributividad de la seleccin con respecto al join/producto cartesiano

Nota: Este axioma permite empujar las selecciones hacia abajo en el rbol

7. Distributividad de la proyeccin sobre el join/producto cartesiano

8. Conmutatividad de la unin y la interseccin

9. Asociatividad de la unin y la interseccin

10. Distributividad de la seleccin con respecto a la unin o la interseccin.

11. Distributividad de la proyeccin con respecto a la unin o la interseccin.

12. Conversin del producto cartesiano en join.

3.2.2

Tamao del espacio de posibilidades de ejecuciones de una consulta lgica

Dada una consulta con n relaciones y n-1 joins para relacionarlas, cuantos planes distintos se pueden construir (considerar parametrizaciones). Se deben tomar en cuenta. 1) Los ordenamientos diferentes: n relaciones se pueden ordenar de n! formas distintas. 2) Las asociaciones o parntesis entre joins. Se usa el nmero de cataln que cuantifica expresiones perfectamente parentizadas.

Donde m es el nmero de parntesis (es decir el nmero de joins en este caso). Pag. 10

Procesamiento y Optimizacin de Consultas

4 Tcnicas para optimizar consultas


1. Optimizacin basada en heursticas. 2. Optimizacin basada en costos (la cual no se tratar en la presente gua)

4.1 Optimizacin basada en heursticas


Se define heurstica como el mtodos exploratorios durante la resolucin de problemas en los cuales las soluciones se descubren por la evaluacin del progreso logrado en la bsqueda de un resultado final (por experiencia). En informtica, se utilizan algoritmos heursticos para obtener soluciones sub-ptimas de problemas cuya optimizacin no es factible en tiempos polinmicos. Esta tcnica busca obtener un plan de ejecucin lgico, cuyo costo sea minimal, basado en las siguientes hiptesis:

Hiptes is:
Realizar las operaciones de seleccin y proyeccin lo ms cercano posible a las hojas de los rboles para reducir resultados intermedios. La evaluacin de un join es ms econmica que la evaluacin de un producto cartesiano.

Para ello se construye un rbol inicial y se realiza el reordenamiento de las operaciones usando los axiomas del lgebra relacional.

Pasos:
Construir un rbol cannico Aplicar los axiomas (si aplican) 1) Aplicar el axioma o regla 1, para descomponer cualquier operacin SELECT con condiciones conjuntivas en una cascada de selecciones. 2) Aplicar axiomas 2, 4, 6 y 10, relativas a la conmutatividad del SELECT o distributividad del SELECT con otras operaciones, para desplazar cada operacin SELECT hacia abajo en el rbol de ejecucin, tan lejos como lo permitan los atributos incluidos 3) Aplicar axiomas 5 y 9, relativas a la conmutatividad y asociacin de las operaciones binarias para reordenar los nodos hoja utilizando el siguiente criterio: a. Posicionar las relaciones con los SELECT ms restrictivos de forma que sean ejecutadas en primer lugar. Se puede decir que los Select ms restrictivos son los que tienen un factor de selectividad ms pequeo, y este se puede calcular con el catlogo del sistema. b. Verificar que las ordenaciones no produzcan productos cartesianos que no puedan convertirse en JOIN 4) Aplicar axioma 12, para conbinar los SELECT con los PRODUCTOS CARTESIANOS, para formar una operacin de JOIN 5) Aplicar axiomas 3, 4, 7, 11 para bajar en el rbol las operaciones PROJECT lo ms que se pueda.

Pag. 11

Procesamiento y Optimizacin de Consultas Ejemplo: Seleccionar los estudiantes que pasaron Administracin de base de datos en el semestre 2-2009 Select Nombre From Estudiante E, Cursar C, Materia M Where E.CI = C.CI and Nota >=10, and M.Cod_Mat =C.Cod_Mat and M.Nombre = Ad ministracin de base de datos and semester_cursa = 2-2009

Arbol cannico de la consulta SQL

Nombre cond
X
Cond = Estudiante.CI = Cursa.CI and Nota >=10, and Materia.Cod_Mat = Cursa.Cod_Mat and Materia.Nombre = Administracin de base de datos and semester_cursa = 2 -2009

X Estudiante

Materia Cursa

Aplicando el axioma 1 y 2 (cascada de selecciones y conmutatividad de la seleccin)

Pag. 12

Procesamiento y Optimizacin de Consultas

Nombre

X X Estudiante Cursa

Materia

Aplicando los axiomas 6 y 12, bajamos las selecciones respectivas a los productos cartesianos y a las hojas,y convertimos los productos cartesianos en Reuniones naturales (Join)

Nombre

Materia Estudiante Cursa

Luego se aplicar el axioma 5 Para que las selecciones ms restrictivas queden a la izquierda (ver factor de selectividad) Pag. 13

Procesamiento y Optimizacin de Consultas Actividad: Como se pueden aplicar los axiomas referidos a las proyecciones

Planes de ejecucin f sic os


Una vez que se ha determinado un plan de ejecucin lgico, el sistema debe construir el plan de ejecucin fsico correspondiente, para determinar el costo de evaluacin de la consulta ejecutada con dicho plan seleccionado, para ello es necesario definir los operadores fsicos asociados a los operadores lgicos del Algebra Relacional, estudiados anteriormente. Para determinar el costo de estos operadores, se deben conocer los algoritmos que implementan cada uno de estos a nivel fsico, y el tamao de las relaciones temporales resultantes, para lo cual es necesario utilizar el factor de selectividad, que ser definido a continuacin.

4.2 Factor de selectividad:


Es una funcin que estima la probabilidad de que una tupla en una relacin, satisfaga una condicin booleana dada. La estimacin se realiza en funcin de la hiptesis de uniformidad e independencia. A travs de este factor se determina el tamao estimado de la relacin resultante.

Uniformidad
Es igualmente probable que una tupla Ti tenga un valor C en el atributo Aj.

Los valores de Aj estn distribuidos uniformemente entre las tuplas.

Indepen dencia
Al ejecutarse la siguiente consulta se asume que la satisfacibilidad de que la condicin cond1 es independiente a la satisfacibilidad de la condicin cond2.

Cmo calcu lar el factor de s electivida d?


Caso base: a)

b)

min(At 1) = C1

C2

Ci

max(At 1)=Cn

Se hace la suposicin de que el dominio de At 1 es finito y discreto, adems existe una enumeracin de los valores en el dom(At1).

Pag. 14

Procesamiento y Optimizacin de Consultas

b) c)

Factor de selectividad del join d) Casos inductivos: Sean P1 y P2 expresiones booleanas de una seleccin o un join. a) b) c) Cardinalidad de la seleccin = fs*numero de tuplas de R

Pag. 15

Procesamiento y Optimizacin de Consultas

4.3 Modelo de costos


El modelo de costos es una herramienta estadstica formal que permite estimar el costo de evaluar un plan de ejecucin fsico. La metaheurstica permite recorrer porciones del espacio de bsqueda donde se encuentran buenos planes de ejecucin El costo de evaluacin de una consulta se mide en tiempo y puede expresar en trminos de diferentes recursos, incluyendo: Los accesos a disco, El tiempo de CPU, El costo de comunicacin (en sistemas distribuidos), El tiempo de respuesta para un plan de evaluacin de una consulta

En sistemas de bases de datos centralizadas, el costo ms importante es el de acceso a disco ya que los accesos a disco son mucho ms lentos que los accesos a memoria principal y los tiempos de CPU. Aunque los optimizadores reales consideran los costos de CPU, aqu se ignoran y solo se considerarn los costos de acceso a disco. Para obtener los costos de acceso a disco se debe calcular el costo de los diferentes algoritmos, llamados operadores fsicos, en funcin del tiempo de transferencia de un bloque, por lo que se debe conocer la cantidad de bloques que ocupan los datos y su organizacin, y la cantidad de acceso a los ndices. 4.3.1 Informacin del catlogo del sistema utilizada para estimar costos.

En primer lugar se debe conocer el tamao de cada archivo de datos, el numero de registros (cardinalidad), el tamao (medio) de los registros, el numero de bloques, el factor de bloqueo, el mtodo de acceso primario, la organizacin y el atributo de ordenamiento (si estn ordenados), los ndices del archivo de datos, el numero de niveles de cada ndice, el tipo (primario, secundario, agrupado) y el numero de bloques de ndice de primer nivel, el tamao de cada atributo y el nmero de valores distintos o su selectividad.

Pag. 16

Procesamiento y Optimizacin de Consultas 4.3.2 Clculo del espacio en disco requerido por una relacin.

En el tema de Manejo de memoria se conoci que cada relacin se almacena en bloques de disco, donde un bloque es la unidad mnima de transferencia entre memoria principal y secundaria, tambin se conoci como calcular el tamao de estas relaciones, haciendo un repaso de esto ltimo se definieron los siguientes casos: Registros de longitud fija: Todos los registros ocupan el mismo nmero de bytes. Registros de longitud variable: cada registro puede tener una longitud diferente y existen delimitadores para indicar cuando comienza o termina un registro. Registros extendibles: un registro puede picarse y almacenarse en distintos bloques (si no cabe en el actual) Registros no extendibles: El registro debe ser almacenado completamente en un bloque.

Para determinar el nmero de bloques necesarios para almacenar un archivo, debemos conocer el nmero de registros del archivo, el tamao de los registros y el tamao de cada bloque de disco. 1. Registros No Extensibles / tamao fijo N el nmero de registros del archivo A. Ra el tamao en bytes de cada registro B Tamao en bytes de cada bloque

El factor de bloqueo y el numero de bloques de un archivo se definen: ; 2. Extendibles / tamao fijo En este caso no se puede definir un tamao de bloqueo sino que definimos el nmero de bloques que ocupa el archivo

3. No Extensible / tamao variable = tamao promedio de un registro de A, estimado con tcnicas de muestreo. y 4. Extensible / tamao variable

Una vez que se conoce el tamao de las relaciones se puede calcular el costo de ejecucin de cada una de las operaciones del lgebra relacional.

Pag. 17

Procesamiento y Optimizacin de Consultas Los costos de las operaciones que se darn a continuacin expresarn en nmero de accesos a disco, por lo que para tener el costo en tiempo se debern multiplicar por D 4.3.3 Operacin Seleccin

4.3.3.1

Seleccin sin ndices

Considere una operacin seleccin en una relacin A cuyas tuplas se almacenan juntas en un archivo y BA es el tamao que ocupa la relacin en bloques de disco y D es el tiempo de acceso a disco. Bsqueda lineal: Se explora cada bloque de la relacin y se comprueban todos los registros para determinar si satisfacen o no la condicin de seleccin Si la condicin es sobre la clave ==> solo un registro cumple la condicin Caso promedio: Costo = Si la condicin no es sobre la clave Costo = BA ==> se debe recorrer todo el archivo

Bsqueda binaria: si el archivo est ordenado segn un atributo clave y la condicin de la seleccin es una igualdad sobre dicho atributo, se puede usar la bsqueda binaria, la cual se realiza sobre los bloques de disco. log2(BA) Si la seleccin no es de igualdad, o no es sobre un atributo clave (y el archivo est ordenado segn este atributo), es posible que ms de un bloque contenga los registros requeridos, si Bf en el numero de bloques que cumple la condicin. Log2BA + (Bf-1)

4.3.3.2

Seleccin con ndice

Las estructuras de ndice se denominan caminos de acceso, ya que proporcionan un camino a travs del cual se pueden localizar y acceder a los datos, se utilizar el predicado de la seleccin como clasificacin de estos algoritmos. Se asumir que los ndices usados son los B+ y la longitud del camino de acceso es siempre la altura del rbol. En este material se asumir que los ndices usados son rboles B+, donde los valores necesarios para calcular el costo de explorar el rbol es la altura del rbol (h), el tipo (primario, secundario o agrupado), y si no es primario,la cantidad de bloques de datos apuntados por cada nodo hoja. Pag. 18

Procesamiento y Optimizacin de Consultas

ndice B+

Archivo de datos

Selecc in de igualdad
ndice primario: Se obtiene el nmero de niveles del ndice + 1 ndice agrupado: Dado que s registros cumplirn la condicin, siendo s la cardinalidad de seleccin del atributo de indexacin Costo = + numero de niveles del ndice

ndice secundario Al igual que el caso anterior s registros cumplen la condicin de igualdad, sin embargo al no estar agrupado cada registro puede estar localizado en un bloque distinto, por lo tanto en el peor caso Costo = s + numero de niveles del rbol.

Selecc iones de comparac in


ndice primario o agrupado Si la comparacin es Atr > v o Atr v, se puede usar un ndice primario o agrupado sobre el atributo Atr para obtener el (primer) valor de v en el archivo de datos, y de all se explora hasta el final Si la comparacin es Atr < v o Atr v no es necesario usar el ndice. ndice secundario Atr > v o Atr v Al estar el ndice secundario ordenado (a nivel de hojas) solo es necesario hallar el primer apuntador a v y recorrer la lista formada por las hojas para obtener los aputadores a los diferentes bloques del archivo de datos. El costo son los mismos que en el caso anterior, lo que cambia es s.

Selecc iones comp lejas (con juntivas o dis yunt ivas )


Seleccin conjuntiva (cond1 AND cond2 AND condn) Utilizando un ndice simple:

Pag. 19

Procesamiento y Optimizacin de Consultas Se verifica si hay un ndice sobre alguno de los atributos, se hace la bsqueda sobre este y se verifica si se cumplen las dems condiciones. Es mas econmico si el altributo que tiene el ndice es el que tiene el fs mas bajo. Si hay un ndice por cada atributo, se utilizan los distintos ndices se recuperan los elementos y luego se hace una interseccin de los tres conjuntos obtenidos. Utilizando un ndice compuesto Solo se puede usar, si cada uno de los atributos estn en la condicin de la seleccin, el tipo de ndice determina el uso de los algoritmos de selecciones simples. Seleccin disyuntiva Si se dispone de ndices sobre cada uno de los atributos, se hace cada bsqueda y se realiza la unin de estas. Sin embargo el que un solo atributo no tenga ndice implica una bsqueda lineal en el archivo de datos. 4.3.4 Operacin ordenamiento

La ordenacin es uno de los algoritmos principales usados en el procesamiento de consultas, por ejemplo si en la consulta SQL se especifica la clausula ORDER BY, o para algunas estrategias de ejecucin del JOIN, la UNION o la INTERSECTION, o en el algoritmo de eliminacin de duplicados en el PROJECT (cuando se especifica en la consulta SQL la opcin DISTINCT. La ordenacin se podra conseguir usando un ndice de ordenacin del atributo de bsqueda, y utilizar luego ese ndice para leer la relacin de manera ordenada, sin embargo con esto se logra solo se logra un ordenamiento lgico lo que es muy costoso debido a implica un acceso a disco para cada tupla,por esta razn es mas deseable ordenar las tuplas fsicamente. Si la relacin cabe completamente en memoria principal se pueden utilizar algoritmos de ordenacin rpida (quick-sort). Costo = BA*Log(BA) Si no caben en memoria principal se usa el algoritmo de ordenacin mezcla externa Si se tienen M bloques de memoria disponible, se lee el archivo en porciones de tamao M bloques y se ordena cada unai=0 repeat leer M bloques de A; Ordenarlo en memoria; Escribir los datos en un archivo de secuencias Si; i = i + 1;} until fin de la relacin A Pag. 20

Procesamiento y Optimizacin de Consultas

En la segunda etapa se mezclan los distintos archivos de secuencia, N ser el numero de archivos de secuencia, si N <M se lleva a cabo el siguiente algoritmo I=0 Leer el bloque i de cada uno de los archivos de secuencia y guardarlos en una pgina de memoria Repeat Elegir la primera tupla de cada una de las pginas y mezclarlas Escribir la tupla y suprimirla de la memoria intermedia If Si vacio and not fin de archivo Si I= i + 1 Leer el bloque i de cada uno de los archivos de secuencia y guardarlos en una pgina de memoria Until todas los bloques estn vacios Se mezclan T archivos de secuencia (conT < M) y se repiten los pasos de mezcla hasta que N < M

Figura 2 Ordenacin externa utilizando el algoritmo de ordenar-mezclar

Costo = BA ( 2 logM1(BA / M) + 1)

Pag. 21

Procesamiento y Optimizacin de Consultas 4.3.5 Operacin proyeccin

At1..Ati B = { (t.At1, t.At2, , t.Ati ) / t B Basado en ordenamiento

se eliminan los duplicados}

For each tupla t in B Guardar en B < t.At1, t.At2, , t.Ati > End Ordenar B en base a los atributos de proyeccin For each tupla t in B Guardar t en B sii no existe t en B End Resultado tabla o relacin donde los duplicados son eliminados Costo BB = #Bloques de B N = # bloques de B BB
Leer B

+
escribi r B

+
Ordena r B

NlogN

2N

leer B y genera r B

Basado en Hash Se crea B For each tupla tj i n B Aplicar f(tj) #se contruye una tabla hash en mp Si tupla tj en f(ti) / ti = tj Descartar ti Si no Guardar ti en f(ti) Fsi Retornar tuplas en tabla hash End Pag. 22

Procesamiento y Optimizacin de Consultas Costo Suposicin B en funcin de f se puede almacenar en memoria la tabla hash (memoria principal) BB + 2N Si no BB + 4N Aunque 4N es menor que 3N + NlogN requiere de memoria principal el cual es un recurso externo. Si no se eliminan duplicados el costo es 2*B B 4.3.6 Operacin Reunin (Join)

La operacin JOIN es una de las operaciones que ms tiempo consumen durante el procesamiento de una consulta, en este caso nos estamos refiriendo al NATURAL JOIN o reunin natural, los algoritmos mas usados son:

Reunin de buc le anidado (NES TED LOOP JOIN)


Dadas dos relaciones A,B, por cada tupla de A se lee cada tupla de B y se verifica que cum pla la condicin del JOIN

For each tupla tA in A For each tupla tB in B If satisfy (tA, tB, Cond) Return (tA. tB) End End End La relacin A se denomina la relacin externa y la relacin B la relacin interna, t A.tB denota la tupla construida por la concatenacin de los valores de los atributos de las tuplas t A y las tuplas tB Esta operacin es muy costosa debido a que examina cada pareja de tuplas de las dos relaciones, para realizar el clculo se debe considerar que la relacin interna se lee secuencialmente por lo que solo necesita una exploracin de A y un total de RA (numero de tuplas de A) exploraciones para leer B completamente, entonces: Si A ocupa BA bloques, B ocupa BB bloques y A tiene RA tuplas Costo = BA + RA*BB

Pag. 23

Procesamiento y Optimizacin de Consultas

Reunin de buc le anidado por bloques (BLOK NES TED LOOP JOIN)
Se puede lograr un ahorro si se procesan las dos relaciones por bloques en lugar que por tuplas, en este algoritmo se empareja cada bloque de la relacin interna, con cada bloque de la relacin externa y por cada par de bloques se emparejan las tuplas de cada relacin. Si solo se lleva un bloque a memoria por cada Relacion, el costo de este algoritmo sera Costo = BA + BA*BB Sin embargo se puede tener un ahorro mayor si se aprovechan todos los bloques de memoria intermedia disponibles, entonces si T es el tamao de memoria intermedia disponible, se reservan 2 bloques para entrada y salida. Costo = BA + x BB

Vemos que si A cabe completamente en memoria principal el costo es minimo. En ambos algoritmos de bucle anidado es ms econmico si la relacin ms pequea est a la izquierda (relacin externa)

Reunion de buc le anidado In dexa do


Si se cuenta con un ndice para la tabla interna

Costo = BA + RA*CostoBuscar(B, CondicionJoin)

Reunin de ordenacin -mezcla (S OR T-M ERG E JOIN)

Ambas tablas estn ordenadas (o se pueden ordenar) sobre los atributos del Join Costo Mximo (ordenar primero) MA . log MA + MB log MB Ordenar A Ordenar B + MA +MB => Costo Optimal Costo Mezclar

Pag. 24

Procesamiento y Optimizacin de Consultas

Reunin asoc iativa (HAS H JOIN)


La idea de este algoritmo es dividir las tuplas de cada relacin en conjuntos con el mismo valor usando una funcin h la cual asocia un valor (clave hash) a cada uno de los datos existentes en los atributos del join y se tiene que: h es una funcin de asociacin que asigna a los atributos de Join los valores {0, 1, .., n} HA0 HAn denota las particiones de las tuplas de A, inicialmente vacias. Cada tupla t A se pode en la particin HA donde i = h (tA [Atributos Join]) HB0 .. HBn denotan las particiones de las tuplas de B, inicialmente vacias. Cada tupla de t B se pone en la particin HB donde i = h (tA [Atributos Join]) Como se aplica la misma funcin para construir ambos particionamientos, cada tupla de A y de B que tengan el mismo resultado en la funcin h estarn en una particin con el mismo nmero es decir

Fase de particin For each tA in A i = h (tA [Atributos Join] ) HAi = HAi U tA End For each tB in B i = h (tB [Atributos Join] ) HBi = HBi U tB End Fase de Carga For each Ha i #para cada particin de A For each tHA HAi # para cada tupla de la particin i de A f(tHA) y salvar en memoria # construir un ndice asociativo sobre la particin A end for each tHB HAB # para cada tupla de la particin i de B explorar el ndice asociativo de HAi y localizar todas las tuplas tales que satisface (c, tHA , tHB ) retornar (c, tHA , tHB ) end end Costo MA = # Bloques de A MB = # Bloques de B El costo es la suma del costo de particin y el costo de carga 2(MA + MB) + MA + MB = 3(MA + MB) fase carga fase prueba Pag. 25

Procesamiento y Optimizacin de Consultas

Cuadro Resumen del costo de las operacion es

Operacin A c B

Nested-loop Join MA + Ra x MB Block Nested-Loop Join MA + x MB

Costo de los operadores fsicos Index Nested-Loop Join Sort-Merge Join MA + CostoBuscar(B) MA . log MA + MB log MB Ordenar A Ordenar B Hash Join 3(MA + MB) + MA +MB => Costo Optimal Costo Mezclar Basado en hashing Si B se puede almacenar en memoria la tabla hash MB + 2N Si no MB + 4N

B1..Bi B

Basado en ordenamiento MB + 3N + NlogN

c B Depende la de la implementacin fsica de B Ra = # tuplas de A MA = # bloques de A Rb = # tuplas de MB = # bloques de B T = # de Bloques disponibles en memoria principal. 4.3.7 rbol de ejecucin fsico

Se denomina asi al rbol de evaluacin lgico al que a los nodos internos se les asigna un operador fsico y sus ndices asociados

Pag. 26

Procesamiento y Optimizacin de Consultas

Nombre
Sin Ordenar

BNLJ T=200

Indice 3 INLJ ndice 2 Indice 1

Materia Cursa Estudiante

4.4 Evaluacin de expresiones


Hasta ahora se han determinado los costos para llevar a cabo operaciones individuales ahora se considerar evaluar una expresin con varias operaciones. 4.4.1 Materializacin

La manera evidente de evaluar una expresin es evaluar cada operacin en un orden apropiado. Luego el resultado se materializa en una relacin temporal para su utilizacin inmediata por el siguiente operador. El inconveniente de este mtodo, es que estas materializaciones temporales (a menos que sean muy pequeas) se tienen que escribir en disco. Para aplicar este enfoque se debe comenzar con las operaciones del nivel ms bajo del rbol (las hojas), luego estas relaciones temporales sern la entrada para las operaciones del siguiente nivel del rbol. Se repite este proceso hasta que se llega a la raz del rbol. 4.4.2 Encauzamiento (Pipeline)

Es un enfoque alternativo donde se evalan varias operaciones de manera simultnea en un cauce, en el que se pasan los resultados de una operacin a la siguiente operacin de encauzamiento Permite mejorar la eficiencia de la evaluacin de consultas mediante la reduccin del nmero de archivos temporales que se producen.

Pag. 27

Procesamiento y Optimizacin de Consultas 4.4.3 Ejercicio de Ejemplo

Vamos a calcular los costos de diferentes planes de la siguiente consulta usando la estrategia de materializacin Cursar CI -----------------------------------------------25 bytes 25 bytes 25 bytes 25 bytes Cod_Mat Nota Semestre Cardinalidad: 10.000.000 tuplas

Estudiante CI ------------------------------------------------

Nombre

Direccin

Telf

Correo

..

1.000 bytes Cardinalidad 10.000 tuplas Consulta Nombre de los estudiantes que aprobaron la materia 6311 en el Semestre 1-2009 Select Nombre From Estudiante E, Cursar C Where E.CI = C.CI and Nota >=10, and Cod_Mat = 6311 and C.Semestre= 1-2009 Algebra Relacional Peor plan

Arbol de ejecucin

nombre (ordenamiento)

condi cin

(Block nested loop join)


Estudiante Cursar

Pag. 28

Procesamiento y Optimizacin de Consultas

Calculo de costo del plan Se asume: Registros de tamao fijo y no extendibles para las relaciones Registros extendibles para resultados intermedios Cursar (caben 10 registros en cada bloque) (cursar necesita 1.000.000 bloques) Estudiante (cabe un registro en cada bloque) (Estudiante necesita 10.000 bloques) Costo del Join Costo (Sp0 ) Cardinalidad de la Salida (Sp0) Tamao del registro 100 bytes de cursar + 1000 bytes de estudiante 25 bytes de CI (atributo comn) 1075 bytes Cardinalidad 10.000.000 tuplas Costo de Guardar Spo (Resultado intermedio) 1,0010E+09 Bloques de 1000 bytes Bloques disponibles en memoria principal 12

Costo del select Esta es una consulta sobre un resultado intermedio donde no hay orden, ni ndices, se usa el enfoque de archivos secuenciales de montculo (Heap files). Costo (Sp1 ) = 10.750.000 bloques Costo Guardar (SP1 ) = 2 bloques (resultado de evaluar la consulta 1 registro) Costo del Project Costo (Sp2 ) = 2 + 1 + 1log1 + 1 = 4 Costo Guardar (Sp2 ) 1 bloque. Costo total = = 1,0010E+09 + 1,075E+07 + 2 + 4 + 1 = 1,0118E+09 Pag. 29

Procesamiento y Optimizacin de Consultas

Plan 2
nombre (ordenamiento)

condi cin

(Block nested loop join)


Cursar Estudiante

Todos los costos se mantienen menos el del join Costo (Sp0 ) = Con lo que el costo total es 1,0108E+09 Por lo que podemos concluir que aunque el join es conmutativo, a nivel de costo, no lo es, y que resulta ms econmico tener la tabla ms pequea del lado izquierdo. Plan 3
nombre (ordenamiento)

1,00001E+09

(Block nested loop join)


condi cin
nombre,carnet (ordenamiento)

Cursar

Estudiante

Implementacin de cursar: Cursar tiene un ndice no clustered por trimestre y cod_mat, son 10 los estudiantes que cumplen estas dos condiciones. La altura del rbol es de 4 niveles y cada nodo interno ocupa un bloque. Costo de la seleccin Costo (Sp0 ) = 4 + 10 = 14 bloques
Recorrer el arbol data entry

Costo Guardar (SPo) = 1 bloque. Costo proyeccin 1 Necesitamos el nmero de bloques ocupado por B Pag. 30

Procesamiento y Optimizacin de Consultas Long del registro = 50 bytes Cardinalidad 10.000 tuplas (la misma de Estudiante) = 500 bloques Costo (Sp1 ) = 10000 + 500 + 500log500 +500 = 12849,485 Costo guardar (Sp1) = 500 bloques. Costo Join Costo (Sp2 )= Costo guardar (Sp2) = Costo proyeccin 2 Costo (Sp3 ) = 1 + 1 + 1log1 + 2 = 4 Costo guardar (Sp3) = 1 Costo total = 15 + 500 + 501 + 5 + 12849,485 = 1,3870E+04 Comparando con los otros dos planes el costo de este plan tiene 5 rdenes de magnitud menos.

Pag. 31

Procesamiento y Optimizacin de Consultas

5 Bibliografa
Elmasri, R., & Navathe, S. (2007). Fundamentos de Sistemas de Bases de Datos (5ta ed.). Madrid, Espaa: Pearson Educacion. Silberschatz, A., Korth, H., & Sudarshan, S. (2006). Fundamentos de bases de datos (Quinta ed.). Madrid: McGraw-Hill/Interamericana.

Pag. 32

Potrebbero piacerti anche