Vous êtes sur la page 1sur 21

ADMINISTRACION DE BASE DE DATOS

Ing. Armando Caballero Alvarado acaballeroa@upao.edu.pe www.acaballeroa.upao.edu.pe

CAPITULO VII

PROCESAMIENTO DE CONSULTAS

Contenido
1. Vista General 2. Medida del costo de la consulta 3. Operacin de seleccin 4. Ordenamiento 5. Operacin JOIN

Vista General
Pasos bsicos en el procesamiento de consultas:

Vista General (Cont.)


Anlisis gramatical y traduccin Primero, traduce la consulta dentro su forma interna. Luego es traducido en algebra relacional. Anlisis gramatical para verificar sintaxis, verifica relaciones Optimizacin Enumerar todos los posibles planes de evaluacin de consulta Calcula el costo para los planes Recoge el plan considerando el costo mnimo Evaluacin El motor de ejecucin de consulta toma un plan de evaluacin de consulta, ejecuta ese plan, y retorna la respuesta a la consulta.

Pasos bsicos en Procesamiento de Consultas: Optimizacin


Una expresin de algebra relacional puede tener varias expresiones equivalentes Ej. balance2500(balance(cuenta)) es equivalente a balance(balance2500(cuenta)) Cada operacin de algebra relacional puede ser evaluada usando uno de varios algoritmos diferentes Correspondientemente, una expresin de algebra relacional puede ser evaluada en muchas formas. Plan de evaluacin de consultas. Las expresiones comentadas especifican detalles de estrategias de evaluacin Ej1: puede usar un ndice sobre balance para encontrar cuentas con balance < 2500, Ej2: puede ejecutar una relacin completa entre barrido y descarte de cuenta con 2500

Pasos bsicos: Optimizacin (Cont.)


Optimizacin de consultas Entre todos los planes de evaluacin equivalentes, selecciona uno con el menor costo. El costo es estimado usando informacin estadstica del catlogo de base de datos
ej. nmero de registros en cada relacin, tamao de registros, etc.

En este captulo estudiaremos: Como medir costos de consultas Algoritmos para evaluacin de operaciones de algebra relacional Como combinar algoritmos para operaciones individuales en orden para evaluar una expresin completa

Medidas del Costo de las Consultas


El costo es generalmente medido como el tiempo total transcurrido para responder a la consulta Muchos factores contribuyen al costo de tiempo acceso al disco, CPU, o hasta comunicacin de la red

Comnmente el acceso al disco es el costo predominante, y es tambin relativamente fcil de estimar. Medidas para tomar en cuenta: Numero de bsquedas X costo-bsqueda-promedio Numero de bloques ledos X costo-lectura-bloque-promedio Numero de bloques escritos X costo-escritura-bloques Costo para escribir un bloque es mas grande que el costo de leer un bloque Datos son ledos despus que son escritos para asegurar que la escritura ha sido satisfactoria

Medidas del Costo de las Consultas (Cont.)


Para simplificar el uso de numero de bloques transferidos desde el disco y numero de bsqueda como la medida de costo tT : tiempo para transferir un bloque tS : tiempo para un bsqueda Costo para b bloques transferidos mas S bsquedas: b*tT + S*tS Ignoramos tambin el costo de CPU por simplificacin No incluimos costo por escritura de salida (resultado de consulta) para el disco en nuestra formula de costo Varios algoritmos pueden reducir I/O en el disco usando espacio de buffer extra. La cantidad de memoria real disponible para el buffer depende de otros procesos SO concurrentes, conocidos solo durante la ejecucin Se asume solo la cantidad mnima de memoria necesaria para la operacin disponible. Los datos requeridos pueden ya estar residentes en el buffer, evitando I/O en el disco. Difcil de tomar en cuenta para costos de estimacin.

Informacin estadstica
El SGBD guarda informacin estadstica de las relaciones en el Catlogo, la cual es utilizada por el optimizador para evaluar el costo de los planes. La informacin que se debe guardar sobre las relaciones son:
Numero de filas de la tabla r: nr Numero de bloques que contienen filas de la tabla r: br Tamao en bytes de una fila de r: tr Numero de filas de r que caben en un bloque: fr Numero de valores distintos del atributo A de la tabla r: V(A,r) Numero medio de filas de r que satisfacen una condicin de igualdad sobre el atributo A de la tabla r: CS(A,r) = nr/V(A,r)

Adems de la informacin de las tablas, tambin utilizan informacin acerca de los ndices:
Orden o grado de los nodos internos del ndice i (para ndices con estructuras de rbol B/B+): gi Numero de bloques en el nivel hoja del ndice i: MBi Altura del ndice para el atributo A de r: AAi =[log gr /2(V(A,R))]

Operacin de Seleccin
File scan (explorador de bsqueda que localiza y retorna registros que cumplen una condicin de seleccin de archivos):. Algoritmo A1 (bsqueda lineal): cada bloque de exploracin de archivos prueba todos los registros para ver si cumplen con la condicin de seleccin. Costo estimado=br bloques transferidos
br : numero de bloques conteniendo registros de la relacin r

Si la seleccin es sobre un atributo clave, puede terminar la bsqueda del registro sin necesidad de explorar los otros registros.
Costo = (br/2) bloques transferidos

La bsqueda lineal puede ser aplicado independientemente de:


Condicin de seleccin, u Ordenamiento de registros en el archivo, o Disponibilidad de ndices

Operacin de Seleccin (Cont.)


Ej. Para este caso el costo es: CA1 = 9 bloques

Operacin de Seleccin (Cont.)


A2 (bsqueda binaria): aplicable si la seleccin es una comparacin de igualdad en el atributo del archivo ordenado.
Asume que los bloques de una relacin estn almacenados contiguamente. costo estimado (numero de bloques de disco a ser explorados)
Costo de localizar la primera fila por una bsqueda binaria en el bloque: log2(br)

Si varios registros satisfacen la seleccin:


Sumar costo de transferencia del numero de bloques conteniendo registros que satisfacen la condicin de seleccin: log2(br)+[CS(A,r)/fr]-1

Operacin de Seleccin (Cont.)


Ej. Para este caso el costo es: CA2=log2(9) = 3 bloques

Operacin de Seleccin (Cont.)


Index scan (exploracin de ndices): algoritmo de bsqueda que usa un ndice. La condicin de seleccin debe ser sobre la clave de bsqueda del ndice. A3 (ndice primario, igualdad sobre la clave candidata): Retorna un nico registro que satisface la correspondiente condicin de igualdad. Costo = (AAi+1)
AAi: altura del rbol 1 operacin de E/S

Operacin de Seleccin (Cont.)


Ej. Para este caso el costo es: CA3 = 3+1=4 bloques

Operacin de Seleccin (Cont.)


A4 (ndice primario, igualdad sobre atributo no clave): Costo = AAi + CS(A,r)/fr
AAi: altura del rbol CS(A,r): numero de filas que satisfacen una condicin de igualdad sobre el atributo A de la tabla r fr : numero de filas que entran en un bloque

Operacin de Seleccin (Cont.)


Ej. Para este caso el costo es: CA4=2+4/2=4 bloques

Ordenacin
Ordenacin es importante en BD: Se solicitan consultas ordenadas Hace que algunas operaciones (como el join) sean mas eficientes La ordenacin se puede lograr de dos maneras: Construyendo un ndice por la clave de ordenacin y utilizando luego ese ndice. Este proceso ordena la relacin slo lgicamente, no en forma fsica, lo que podra significar acceder al disco por cada fila. Ordenando los datos en memoria principal. El problema es cuando el conjunto de datos no cabe en la memoria principal, por lo cual se debe realizar una ordenacin externa: Primero se crean varias secuencias ordenadas de tamao igual al tamao de la memoria principal (M), grabando el resultado en un archivo temporal. Las secuencias ordenadas se usan como entrada de un proceso de mezcla (igual a la fase de mezcla del Merge Sort), en la cual se mezclan hasta M-1 secuencias ordenadas por vez. Durante la mezcla las secuencias ordenadas se leen por pedazos de tamao igual a un bloque de disco (o pgina de memoria) El proceso termina cuando se obtiene una nica secuencia ordenada. El costo de una ordenacin externa esta dado por: br*(2*[log M-1(br/M)]+1)

Ordenacin

M=3 br =12 bloques transferidos=12*(2[log24)+1) bloques transferidos=60

Operacin Join-Estimacin del tamao


El producto cartesiano r x s contiene nr*ns filas, y el tamao de cada fila es tr+ts, por lo que se puede calcular su tamao. Sean r y s dos relaciones y R y S los atributos seleccionados de r y s respectivamente, si:
Si RS = , entonces r s (r join s) es lo mismo que rxs Si RS es una clave externa de r, entonces el nmero de filas en r s es exactamente el nmero de filas de s y viceversa Si RS no es una clave de r ni de s, y RS = {A} entonces se relacionan de s todas las filas que cumplan con A:
CS (A,s) =ns/V(A,s)

Que se unen a todas las filas en r que cumplen con A, entonces se estima que hay tantas filas como: (nr*ns)/V(A,s)

Vous aimerez peut-être aussi