You are on page 1of 21

ADMINISTRACION DE BASE DE DATOS

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

CAPITULO VII

PROCESAMIENTO DE CONSULTAS

Ordenamiento 5. Vista General 2. Operación de selección 4. Operación JOIN . Medida del costo de la consulta 3.Contenido 1.

Vista General • Pasos básicos en el procesamiento de consultas: .

traduce la consulta dentro su forma interna.) • Análisis gramatical y traducción – Primero.Vista General (Cont. – Análisis gramatical para verificar sintaxis. . – Luego es traducido en algebra relacional. verifica relaciones • Optimización – Enumerar todos los posibles planes de evaluación de consulta – Calcula el costo para los planes – Recoge el plan considerando el costo mínimo • Evaluación – El motor de ejecución de consulta toma un plan de evaluación de consulta. – y retorna la respuesta a la consulta. – ejecuta ese plan.

– Las expresiones comentadas especifican detalles de estrategias de evaluación – Ej1: puede usar un índice sobre balance para encontrar cuentas con balance < 2500.Pasos básicos en Procesamiento de Consultas: Optimización • Una expresión de algebra relacional puede tener varias expresiones equivalentes – Ej. – Ej2: puede ejecutar una relación completa entre barrido y descarte de cuenta con  2500 . una expresión de algebra relacional puede ser evaluada en muchas formas. balance2500(balance(cuenta)) es equivalente a balance(balance2500(cuenta)) • Cada operación de algebra relacional puede ser evaluada usando uno de varios algoritmos diferentes – Correspondientemente. • Plan de evaluación de consultas.

número de registros en cada relación. tamaño de registros. – El costo es estimado usando información estadística del catálogo de base de datos • ej. selecciona uno con el menor costo. etc. • En este capítulo estudiaremos: – Como medir costos de consultas – Algoritmos para evaluación de operaciones de algebra relacional – Como combinar algoritmos para operaciones individuales en orden para evaluar una expresión completa .) • Optimización de consultas – Entre todos los planes de evaluación equivalentes.Pasos básicos: Optimización (Cont.

o hasta comunicación de la red • Comúnmente el acceso al disco es el costo predominante. Medidas para tomar en cuenta: – Numero de búsquedas X costo-búsqueda-promedio – Numero de bloques leídos 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 leídos después que son escritos para asegurar que la escritura ha sido satisfactoria . y es también relativamente fácil de estimar.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.

Los datos requeridos pueden ya estar residentes en el buffer. – La cantidad de memoria real disponible para el buffer depende de otros procesos SO concurrentes. evitando I/O en el disco. • • • • . conocidos solo durante la ejecución • Se asume solo la cantidad mínima de memoria necesaria para la operación disponible.Medidas del Costo de las Consultas (Cont. – Difícil de tomar en cuenta para costos de estimación.) • Para simplificar el uso de numero de bloques transferidos desde el disco y numero de búsqueda como la medida de costo – tT : tiempo para transferir un bloque – tS : tiempo para un búsqueda – Costo para b bloques transferidos mas S búsquedas: b*tT + S*tS Ignoramos también el costo de CPU por simplificación 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.

R))] .r) Numero medio de filas de “r” que satisfacen una condición de igualdad sobre el atributo A de la tabla “r”: CS(A.r) • Además de la información de las tablas. • La información 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 Tamaño 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. también utilizan información 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.Información estadística • El SGBD guarda información estadística de las relaciones en el Catálogo. la cual es utilizada por el optimizador para evaluar el costo de los planes.r) = nr/V(A.

• Algoritmo A1 (búsqueda lineal): cada bloque de exploración de archivos prueba todos los registros para ver si cumplen con la condición de selección. o • Disponibilidad de índices . – Costo estimado=br bloques transferidos • br : numero de bloques conteniendo registros de la relación r – Si la selección es sobre un atributo clave.Operación de Selección • File scan (explorador de búsqueda que localiza y retorna registros que cumplen una condición de selección de archivos):. • Costo = (br/2) bloques transferidos – La búsqueda lineal puede ser aplicado independientemente de: • Condición de selección. puede terminar la búsqueda del registro sin necesidad de explorar los otros registros. u • Ordenamiento de registros en el archivo.

Para este caso el costo es: CA1 = 9 bloques .Operación de Selección (Cont.) • Ej.

r)/fr]-1 . – Asume que los bloques de una relación están almacenados contiguamente.Operación de Selección (Cont. – costo estimado (numero de bloques de disco a ser explorados) • Costo de localizar la primera fila por una búsqueda binaria en el bloque: log2(br) – Si varios registros satisfacen la selección: • Sumar costo de transferencia del numero de bloques conteniendo registros que satisfacen la condición de selección: log2(br)+[CS(A.) • A2 (búsqueda binaria): aplicable si la selección es una comparación de igualdad en el atributo del archivo ordenado.

Para este caso el costo es: CA2=log2(9) = 3 bloques .Operación de Selección (Cont.) • Ej.

– La condición de selección debe ser sobre la clave de búsqueda del índice. igualdad sobre la clave candidata): Retorna un único registro que satisface la correspondiente condición de igualdad.) • Index scan (exploración de índices): algoritmo de búsqueda que usa un índice. – Costo = (AAi+1) • AAi: altura del árbol • 1 operación de E/S .Operación de Selección (Cont. • A3 (índice primario.

) • Ej. Para este caso el costo es: CA3 = 3+1=4 bloques .Operación de Selección (Cont.

r)/fr • AAi: altura del árbol • CS(A.Operación de Selección (Cont.r): numero de filas que satisfacen una condición de igualdad sobre el atributo “A” de la tabla “r” • fr : numero de filas que entran en un bloque .) • A4 (índice primario. igualdad sobre atributo no clave): – Costo = AAi + CS(A.

Para este caso el costo es: CA4=2+4/2=4 bloques .Operación de Selección (Cont.) • Ej.

lo que podría significar acceder al disco por cada fila. – Ordenando los datos en memoria principal. en la cual se mezclan hasta M-1 secuencias ordenadas por vez. – Durante la mezcla las secuencias ordenadas se leen por pedazos de tamaño igual a un bloque de disco (o página de memoria) – El proceso termina cuando se obtiene una única secuencia ordenada. – El costo de una ordenación externa esta dado por: br*(2*[log M-1(br/M)]+1) • . Este proceso ordena la relación sólo lógicamente.Ordenación • • Ordenación es importante en BD: – Se solicitan consultas ordenadas – Hace que algunas operaciones (como el join) sean mas eficientes La ordenación se puede lograr de dos maneras: – Construyendo un índice por la clave de ordenación y utilizando luego ese índice. – Las secuencias ordenadas se usan como entrada de un proceso de mezcla (igual a la fase de mezcla del Merge Sort). El problema es cuando el conjunto de datos no cabe en la memoria principal. no en forma física. por lo cual se debe realizar una ordenación externa: – Primero se crean varias secuencias ordenadas de tamaño igual al tamaño de la memoria principal (M). grabando el resultado en un archivo temporal.

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

entonces se estima que hay tantas filas como: • (nr*ns)/V(A. entonces r s (r join s) es lo mismo que rxs – Si R∩S es una clave externa de “r”. y R∩S = {A} entonces se relacionan de “s” todas las filas que cumplan con A: • CS (A. y el tamaño de cada fila es tr+ts.s) .s) Que se unen a todas las filas en “r” que cumplen con A. entonces el número de filas en r s es exactamente el número de filas de “s” y viceversa – Si R∩S no es una clave de “r” ni de “s”.Operación Join-Estimación del tamaño • El producto cartesiano r x s contiene nr*ns filas. por lo que se puede calcular su tamaño. si: – Si R∩S =ø .s) =ns/V(A. • Sean r y s dos relaciones y R y S los atributos seleccionados de r y s respectivamente.