• No se han encontrado resultados

Capitulo 5 Procesamiento de consultas

N/A
N/A
Protected

Academic year: 2020

Share "Capitulo 5 Procesamiento de consultas"

Copied!
43
0
0

Texto completo

(1)

Database System Concepts, 5th Ed.

©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use

(2)

Procesamiento de consultas

Procesamiento de consultas

 Visión general

 Medidas del coste de una consulta  Operación selección

 Ordenación

 Operación reunión  Otras operaciones

(3)

Pasos básicos para el procesamiento de consultas

Pasos básicos para el procesamiento de consultas

1. Análisis y traducción 2. Optimización

(4)

Pasos básicos para el procesamiento de

Pasos básicos para el procesamiento de

consultas (Cont.)

consultas (Cont.)

 Análisis y transformación

 Traducción de la consulta a su formato interno. Posteriormente se

construye un árbol para el análisis de la consulta, que se transformara en una expresión del algebra relacional.

 El analizador comprueba la sintaxis de la consulta, verifica nombres

de relaciones de la BD.

 Evaluación

 El motor de evaluación elije un plan de la consulta, se evalúa y

(5)

Pasos básicos para el procesamiento de consultas:

Pasos básicos para el procesamiento de consultas:

Optimización

Optimización

 Una expresión del álgebra relacional puede tener muchas expresiones

equivalentes: select saldo from cuenta where saldo < 2500  Ejm.,

saldo2500(saldo(Cuenta)) es equivalente a

saldo(

saldo2500(Cuenta))

 Se puede ejecutar cada operación del álgebra relacional utilizando

alguno de los diferentes algoritmos.

 En consecuencia, una expresión del álgebra relacional se puede

evaluar de muchas maneras.

 Las anotaciones de las expresiones que especifican los detalles de la

estrategia de evaluación se denomina plan de evaluación.

 Ejm., Puede usar un índice sobre saldo para encontrar las

cuentas con saldo < 2500

 O podemos realizar un completo escaneo y descartar cuentas con

(6)

Pasos básicos para el procesamiento de consultas:

Pasos básicos para el procesamiento de consultas:

Optimización (Cont.)

Optimización (Cont.)

Optimización de consultas: Entre todos los planes de evaluación

equivalente elegir el de menor costo.

 El Costo se calcula utilizando la información estadística en el

catálogo de la base de datos.

 Ejm. número de tuplas de cada relación, el tamaño de las

tuplas, etc.

 Temas a estudiar:

 ¿Cómo medir los costos de los algoritmos de consulta para

evaluar las operaciones de álgebra relacional?

 ¿Cómo combinar los algoritmos de las operaciones individuales a

(7)

Medidas del coste de una consulta

Medidas del coste de una consulta

 El costo es generalmente medido como el tiempo total transcurrido para

responder a la consulta

 Muchos factores contribuyen al costo del tiempo

Accesos a disco, CPU, o eventos de comunicación en Red.

 Generalmente el acceso a disco predomina en el costo, y es relativamente fácil

de estimar. Se mide tomando en cuenta:

 Numero de búsquedas * Promedio del costo de búsqueda

 Numero de bloques leídos * Promedio del costo de bloques leídos  Numero de bloques escritos * Promedio del costo de bloques escritos

 Costo para escribir un bloque es mayor que el costo para leer un bloque

(8)

Medidas del coste de una consulta (Cont.)

Medidas del coste de una consulta (Cont.)

 Para simplificar, sólo tiene que utilizar el número de transferencias de bloques de

disco y el número de búsquedas como las medidas de coste.  t

T – tiempo para la transferencia de un bloque

t

S – tiempo para una búsqueda (tiempo de búsqueda en el disco mas latencia

rotacional)

 Costo b transferencias de bloques, más S búsquedas: b * t

T + S * tS

 No se considera el costo de CPU

 En Sistemas reales se toma en cuenta el costo de CPU

 Las estimaciones de coste que se proporcionan ignoran el coste de escribir el

resultado final de una operación en disco

 Varios algoritmos puede redudir E/S a disco utilizando un espacio extra de buffer.

 La cantidad de memoria disponible en el buffer depende de tareas concurrentes y procesos de SO, conocidos durante la ejecución.

 Frecuentemente asumimos la mínima cantidad de memoria disponible para la operación.

 Aunque se asuma que los datos se deben leer inicialmente de disco, es posible que

(9)

Operación de Selección

Operación de Selección

explorador de archivo– es el operador de nivel más bajo para acceder a los datos. Los exploradores de archivo son algoritmos de búsqueda que localizan y recuperan los registros que cumplen una condición de selección.  Algoritmo A1 (Búsqueda lineal). se explora cada bloque del archivo y se

comprueban todos los registros para ver si satisfacen la condición de selección.

 Costo estimado = b

r transferencias de bloques.

br numero de bloques que contienen a los registros de la relación r

 Las selecciones sobre atributos clave tienen un coste medio de:

 coste = (br /2) transferencias de bloque

 Búsqueda lineal se puede aplicar independientemente de la:

 La condición de selección

 El orden de los registros en el archivo

(10)

Operación de Selección (Cont.)

Operación de Selección (Cont.)

A2 (búsqueda binaria). Aplicable si el archivo está ordenado según un atributo y la condición de la selección es una comparación de igualdad en ese atributo.

 Supongamos que los bloques de una relación se almacenan de forma

contigua

 Estimación de costos (número de bloques de disco a escanear):

 Costo de la localización de la primera tupla por búsqueda binaria

sobre los bloques:

 log2(br) * (tT + tS)

 Si la selección no es sobre un atributo clave, más de un bloque

puede contener los registros requeridos, y el coste de la lectura de los bloques extra se debe añadir a la estimación del coste. Se

(11)

Selección usando Índices

Selección usando Índices

 Las estructuras índice se denominan caminos de acceso, ya que

proporcionan un camino a través del cual se pueden localizar y acceder a los datos.

 Los algoritmos de búsqueda que utilizan un índice reciben el nombre

de exploraciones del índice.

 Aunque los índices pueden proporcionar un acceso rápido, directo y

(12)

Selección usando Índices

Selección usando Índices

A3 (Índice primario, igualdad basada en la clave). Para una condición

de igualdad en un atributo clave con un índice primario se puede utilizar el índice para recuperar el único registro que satisface la

correspondiente condición de igualdad.

 Si se usa un árbol B+, el coste de la operación en términos de

operaciones E/S es igual a la altura del árbol más una operación E/ S para recuperar el registro.

Costo = (h

i + 1) * (tT + tS)

A4 (Índice primario, igualdad basada en un atributo no clave) Recupera

múltiples registros.

 Estos registros estarían almacenados consecutivamente en el

(13)

Selección usando Índices (Cont.)

Selección usando Índices (Cont.)

A5 (índice secundario, igualdad).

 Esta estrategia puede recuperar un único registro si la condición de

igualdad es sobre una clave; puede que se recuperen varios

registros si el campo índice no es clave. En el primer caso sólo se obtiene un registro, y el coste es igual a la altura del árbol más una operación E/S para recuperar el registro. En el segundo caso, cada registro puede residir en un bloque diferente, que puede resultar en una operación E/S por cada registro recuperado. El coste podría

llegar a ser incluso peor que el de la búsqueda lineal si se obtiene un gran número de registros.

 Recupera un simple registro si la clave de búsqueda es una clave

candidata

Costo = (h

i + 1) * (tT + tS)

 Recupera múltiples registros si la clave de búsqueda no es una clave

candidata.

 Cada uno de los n registros similares pueden estar en diferentes

bloques.

 Costo = (h

(14)

Selecciones con condiciones de comparación

Selecciones con condiciones de comparación

 Considérese una selección de la forma 

AV (r) o A V(r), Se puede

implementar utilizando búsqueda lineal o binaria o con índices de alguna de las siguientes maneras:

A6 (Índice primario, comparación). (La Relación es ordenada sobre A)

 Para 

A V(r) utilizar el índice para encontrar primera tupla v y

escanear relación secuencialmente a partir de ahí.

 Para 

AV (r) solo escanear la relación secuencialmente hasta primera

tupla > v; no utilizar el índice.

A7 (Índice secundario, comparación).

 Para 

A V(r) utilizar el índice para encontrar primera entrada de índice

v y explorar el índice secuencialmente a partir de ahí, para encontrar los punteros a los registros.

 Para 

AV (r) sólo escanear páginas de hoja del índice encontrando los

punteros a los registros, hasta la primera entrada > v

 En cualquier caso, recuperar registros que son apuntados.

– Requiere una E/S para cada registro

(15)

Implementación de selecciones complejas

Implementación de selecciones complejas

Conjunción: 12. . . n(r)

A8 (selección conjuntiva utilizando un índice).

 Selecciona una combinación de i y algoritmos A1 a A7 que da como resultado el menor coste para i (r).

 Pruebe otras condiciones en tupla después de obtenerlo en el buffer de memoria.

A9 (selección conjuntiva utilizando un índice compuesto).

 Utilice índice apropiado compuesto (múltiples claves) si está disponible.

A10 (selección conjuntiva mediante la intersección de identificadores).

 Requiere índices con punteros de registros.

 El uso del índice correspondiente para cada condición, y tomar la

intersección de todos los conjuntos obtenidos del punteros de registros.  Luego recuperar los registros de archivo

(16)

Implementación de selecciones complejas

Implementación de selecciones complejas

Disyunción:12 . . . n (r).

A11 (selección disyuntiva mediante la unión de identificadores).

 Aplicable si todas las condiciones tienen índices disponibles.

 Caso contrario, utilice barrido lineal.

 El uso del índice correspondiente para cada condición, y tomar la unión

de todos los conjuntos obtenidos del punteros de registros.

 Luego recuperar los registros de archivo

Negation: (r)

 Utilice exploración lineal en el archivo

 Si muy pocos registros cumplen , y un índice es aplicable a 

 Buscar la satisfacción de los registros con índice y recuperar desde

(17)

Ordenación

Ordenación

 Se puede conseguir la ordenación mediante la construcción de un

índice en la clave de ordenación y utilizando luego ese índice para leer la relación de manera ordenada.

 Este proceso ordena la relación sólo lógicamente a través de un

índice, en lugar de físicamente.

 Por esta razón sería deseable ordenar las tuplas físicamente. La

(18)

Algoritmo de ordenación-mezcla externa

Algoritmo de ordenación-mezcla externa

 La técnica más utilizada para la ordenación externa es normalmente

el algoritmo de ordenación-mezcla externa.

 Sea M el número de marcos de página en la memoria intermedia de la

(19)

Algoritmo de ordenación-mezcla externa

Algoritmo de ordenación-mezcla externa

Primera etapa

Primera etapa

 Se crean varias secuencias ordenadas.

i=0

repeat

leer M bloques o bien de la relación o bien del resto de la relación según el que tenga menor número de bloques;

ordenar la parte en memoria de la relación;

escribir los datos ordenados al archivo de secuencias Si; i=i+1;

until el final de la relación

i=0

repeat

leer M bloques o bien de la relación o bien del resto de la relación según el que tenga menor número de bloques;

ordenar la parte en memoria de la relación;

escribir los datos ordenados al archivo de secuencias Si; i=i+1;

(20)

Algoritmo de ordenación-mezcla externa

Algoritmo de ordenación-mezcla externa

Segunda etapa

Segunda etapa

 Las secuencias se mezclan. Si se tienen N secuencias de tal forma

que N<M

Leer un bloque de cada uno de los N archivos Si, y guardarlos en una página de la memoria intermedia en memoria;

repeat

elegir la primera tupla (según el orden) de entre todas las páginas de la memoria intermedia:

Escribir la tupla y suprimirla de la página de la memoria intermedia;

if la página de la memoria intermedia de alguna secuencia Si está vacía

and not fin_de_archivo(Si) then

leer el siguiente bloque Si y guardarlo en la página de la memoria intermedia;

until todas las páginas de la memoria intermedia estén vacías

Leer un bloque de cada uno de los N archivos Si, y guardarlos en una página de la memoria intermedia en memoria;

repeat

elegir la primera tupla (según el orden) de entre todas las páginas de la memoria intermedia:

Escribir la tupla y suprimirla de la página de la memoria intermedia;

if la página de la memoria intermedia de alguna secuencia Si está vacía

and not fin_de_archivo(Si) then

leer el siguiente bloque Si y guardarlo en la página de la memoria intermedia;

(21)

Algoritmo de ordenación-mezcla externa

Algoritmo de ordenación-mezcla externa

casos y coste

casos y coste

 En el caso en que N>M, se realiza la operación de mezcla en varios

ciclos, tomando como entrada de cada ciclo M-1 secuencias de bloques. Se ordena cada secuencia según el algoritmo anterior.

 Si al concluir el ciclo completo se tiene que N>M, se repiten estos

ciclos tantas veces como sea necesario, hasta que el número de secuencias sea menor que M; momento en el que un último ciclo genera el resultado ordenado.

El número total de bloques transferidos en una ordenacion de

mescla externa es:

(22)
(23)

Operación reunión

Operación reunión

 Existen varios algoritmos para implementar la reunión.

 Reunión en bucle anidado

 Reunión en bucle anidado por bloques  Reunión en bucle anidado indexada  Reunión por mezcla

 Reunión por asociación

 La elección es en función al costo calculado.

 En los ejemplos se utiliza la siguiente información:

 # de registros de cliente: ncliente = 10000.  # de bloques de cliente: bcliente = 400.

(24)

Reunión en bucle anidado

Reunión en bucle anidado

 Calcular la reunión Zeta: r s

for each tuple tr in r do begin

for each tuple ts in s do begin

comprobar que el par (tr,ts) satisface la condición  de la reunión si la cumple, añadir tr • ts al resultado.

end end

r es llamado la relación externa y s la relación interna de la reunión.  No requiere índices y se puede utilizar sin importar la condición de la

reunión.

(25)

Reunión en bucle anidado

Reunión en bucle anidado

(Cont.)

(Cont.)

 En el peor de los casos, la memoria intermedia solamente puede contener un

bloque de cada relación necesitándose un total de nr  bs + br accesos a bloques

 En el mejor de los casos hay suficiente espacio para que las dos relaciones

quepan en memoria intermedia, así que cada bloque se tendrá que leer solamente una sola vez.

 En consecuencia se necesitaría acceder a br + bs bloques

 Asumiendo el peor caso de disponibilidad de la memoria la estimación de costos

es:

 Con impositor como relación externa:

 5000  400 + 100 = 2,000,100 accesos a bloques,

 Con cliente como la relación externa

 10000  100 + 400 = 1,000,400 accesos a bloques

 En la mejor de las situaciones, sin embargo, se tienen que leer ambas relaciones

una sola vez y realizar el cálculo. El cálculo necesita a lo sumo 100+400=500 accesos a bloques.

(26)

Reunión en bucle anidado por bloques

Reunión en bucle anidado por bloques

 Variante de la reunión de bucle anidado en la cual cada bloque

de la relación interna es emparejada con cada bloque de la relación externa.

for each block Br of r do begin

for each block Bs of s do begin for each tuple tr in Br do begin

for each tuple ts in Bs do begin

Comprobar que el para (tr,ts) satisface la condición de la reunión

si la cumple, añadir trts al resultado. end

(27)

Reunión en bucle anidado por bloques

Reunión en bucle anidado por bloques

(Cont.)

(Cont.)

 En el peor de los casos, cada bloque de la relación interna s se lee solamente una vez

por cada bloque de la relación externa en lugar de una vez por cada tupla de la

relación externa. De este modo, en el peor de los casos habrá un total de: br  bs + br

accesos a bloques.

 En el mejor de los casos habrá que acceder a b

r + bs.

 El rendimiento de los procedimientos de bucle anidado y bucle anidado por bloque se

puede mejorar a un mas:

 En el bucle anidado por bloques, utilizar M — 2 bloques de disco como la unidad de bloque para la relación externa, donde M = tamaño en bloques de la memoria; utilizar los restantes dos bloques para almacenar los bloques de la relación

interna y bloques de resultado o salida.

 Costo = b

r / (M-2)  bs + br acceso a bloques

 Si los atributos de la reunión en una reunión natural o una equirreunión forman una clave de la relación interna, entonces el bucle interno puede finalizar tan pronto como se encuentre la primera correspondencia.

 Se puede explorar el bucle interno alternativamente hacia adelante y hacia atrás. Este método de búsqueda ordena las peticiones de bloques de disco de tal

manera que los datos restantes en la memoria intermedia de la búsqueda anterior se reutilizan.

(28)

Reunión en bucle anidado indexado

Reunión en bucle anidado indexado

 Búsquedas en Índices pueden reemplazar a la exploración de archivos sí:

 La Reunión es una equireunión o una reunión natural y

 Esta disponible un índice sobre el atributo de la reunión en la relación interna  Puede construirse un índice exclusivamente para el calculo de la reunión.

 Para cada tupla tr de la relación externa r, se utiliza el índice para buscar tuplas en

s que cumplan la condición de reunión con la tupla tr.

 En el peor de los casos solo hay espacio en la memoria intermedia para una

página de r y una página del índice. Para cada tupla de r, se realiza una búsqueda en el índice de s.

 Costo de la reunión: br + nrc

 Donde c es el costo de una única selección en s utilizando la condición de la reunión.

 Ya se vio como estimar el coste del algoritmo de una única selección cuyo calculo es proporcional a c .

 Si hay índices disponibles en ambas relaciones r y s, normalmente es mas

(29)

Ejemplo en el costo de una Reunión en bucle anidado

Ejemplo en el costo de una Reunión en bucle anidado

indexado

indexado

 Evaluar impositor cliente, con impositor como la relación externa.

 Si cliente tiene un índice primario de árbol B+ en el atributo de la

reunión nombre_cliente, que contiene 20 entradas en promedio por cada nodo del índice.

 Suponga que cliente tiene 10000 tuplas, la atura del árbol es 4, y será

necesario un acceso más para encontrar el dato real.

impositor tiene 5000 tuplas

 El costo total para una reunión en bucle anidado por bloques:

 400*100 + 100 = 40,100 accesos a bloques

 Asumiendo el peor caso de la memoria

 Puede ser significativamente menor cuando hay mas memoria

 Costo para una reunión en bucle anidado indexado

(30)

Reunión por mezcla

Reunión por mezcla

1. Ordenar ambas relaciones en el atributo de la reunión (Si aun no estan

ordenadas en el atributo de la reunión).

2. Mezclar las relaciones ordenadas para la reunión de ellos.

1. Su reunión se puede calcular mediante un proceso muy parecido a la

etapa de mezcla del algoritmo de ordenación-mezcla.

2. La principal diferencia es el manejo de valores duplicados en el atributo

(31)

Reunión por mezcla (Cont.)

Reunión por mezcla (Cont.)

 Cada bloque tiene que ser leído sólo una vez ()

 Dado que las relaciones están ordenadas, las tuplas con el mismo valor

(32)

Reunión por asociación

Reunión por asociación

 Utilizado para equirreuniones y reuniones naturales.

 Se utiliza una función de asociación h para dividir las tuplas de ambas

relaciones

H es una función de asociación que asigna a los AtribsReunion los

valores {0, 1, ..., n}, donde AtribsReunion denotan los atributos comunes de r y s utilizados en la reunión natural.

Hr0, Hr1, . . ., Hrnh denotan las particiones de las tuplas de r,

inicialmente todas vacías. Cada tupla tr r se pone en la partición

Hri donde i = h(tr[AtribsReunion]).

Hs0,, Hs1. . ., Hsnh denota las particiones de las tuplas de s,

inicialmente todas vacías. Cada tupla tss se pone en la partición

si, donde i = h(ts[AtribsReunion]).

 La función de asociación h debería de tener las “buenas” propiedades

(33)

Reunión por asociación

(34)

Reunión por asociación

Reunión por asociación

(Cont.)

(Cont.)

 Supóngase que una tupla de r y una tupla de s satisfacen la condición de la

reunión; por tanto, tendrán el mismo valor en los atributos de la reunión. Si el valor se asocia con algún valor i, la tupla de r tiene que estar en Hri y la tupla de s en Hsi. De este modo solamente es necesario comparar las tuplas de r en Hri con las tuplas de s en Hsi; no es necesario compararlas con las tuplas de s de otra partición.

 El coste estimado para una reunión por asociación es:

3(br + bs) + 2nh

Reunión por Asociación Híbrida: Se aplica en el caso de que la memoria sea grande pero que ninguna de las relaciones pueda caber en memoria.

 La idea es mantener las primeras particiones de la relación interna en memoria sin escribirlas a disco.

(35)

Algoritmos de Join con operaciones complejas

Algoritmos de Join con operaciones complejas

Condición Conjuntiva:

r join 1 2... n s

 Se aplica uno de los algoritmos de bucles anidados, ó

 Computar el resultado para una condición r join i s

 Sobre el resultado se seleccionan las filas que cumplen con las

demás condiciones

1 . . .  i –1  i +1  . . .  n

Condición disyuntiva:

r join1  2 ...  ns

 Se aplica uno de los algoritmos de bucles anidados, ó

 Calcular cada operación individualmente y unir los resultados:

(36)

Join Externos

Join Externos

 Se calculan:

 Realizando una operación de Join interno con los algoritmos descritos y

luego agregando las filas no reunidas de una o ambas relaciones complementadas con valores nulos.

 Modificando los algoritmos de Join interno.

 Para el join por mezcla, r left outer join s puede calcularse como:

1. Caculando r join s y unir su resultado al resultado de la operación

R (r join s) – r complementadas con valores nulos, ó

2. Modificando el algoritmo de reunión por mezcla: Durante la mezcla para las filas de r no reunidas añadirlas al resultado complementadas con valores nulos.

 Para el join por asociación, r left outer join s puede calcularse como:

1. Si r es la relación de prueba, añadirla al resultado sus filas complementadas al no encontrarse filas de s concordantes a través del índice de la partición. 2. Si r es la relación de construcción, se marca las entradas del índice no

(37)

Otras operaciones

Otras operaciones

Eliminación de duplicados puede ser implementado vía ordenación o asociación.

 Las tuplas idénticas aparecerán consecutivas durante la ordenación,

pudiéndose eliminar todas las copias menos una.

Optimización: Con la ordenación-mezcla externa, se pueden eliminar los

duplicados mientras se crea una secuencia antes de que ésta se escriba en el disco, reduciendo así el número de bloques transferidos. El resto de

duplicados se pueden suprimir durante la etapa de reunión/mezcla, así que el resultado final estará libre de repeticiones

 Similar a la reunión por asociación – los duplicados estarán en los mismos

cajones.  Proyección:

 Se realiza la proyección en cada tupla

(38)

Otras operaciones : Agregación

Otras operaciones : Agregación

Agregación puede ser implementado de manera similar a la

eliminación de duplicados.

 Ordenación o Asociación puede ser usado para llevar las tuplas a

un mismo grupo, y luego aplicar la función de agregación a cada grupo.

 El coste estimado para la implementación de la operación

(39)

Otras operaciones : Operación sobre conjuntos

Otras operaciones : Operación sobre conjuntos

Operación sobre conjuntos (,  y ): puede utilizarse variantes de

reunión por mezcla después la ordenación, o la variante de la reunión por asociación.

 Eejmplo, Operación de conjuntos usando reunión por asociación :

1. Particionar ambas relaciones utilizando la misma función hash 2. Procesar cada partición i como sigue:

r s:

1. Construir un índice asociativo en memoria sobre Hri.

2. Añadir las tuplas de Hsi, al índice asociativo solamente si no estaban ya presentes.

3. Añadir las tuplas del índice asociativo al resultado.

rs:

1. Construir un índice asociativo en memoria Hri

2. Para cada tupla en Hsi, probar el índice asociativo y pasar la tupla al resultado únicamente si ya estaba presente en el índice.

rs:

1. Construir un índice asociativo en memoria en Hri

2. Para cada tupla de Hsi probar el índice asociativo y, si la tupla está presente en el índice, suprimiendo del índice asociativo.

(40)

Evaluación de expresiones

Evaluación de expresiones

 Hasta aquí se ha estudiado cómo llevar a cabo operaciones

relacionales individuales.

 Ahora se considera cómo evaluar una expresión que contiene varias

operaciones.

 La manera evidente de evaluar una expresión es simplemente evaluar

una operación a la vez en un orden apropiado.

 El resultado de cada evaluación se materializa en una relación

temporal para su inmediata utilización. Un inconveniente de esta

aproximación es la necesidad de construir relaciones temporales, que (a menos que sean pequeñas) se tienen que escribir en disco. Un enfoque alternativo es evaluar varias operaciones de manera

(41)

Materialización

Materialización

Evaluación materializada: evaluar una operación a la vez,

comenzando en el nivel más bajo. Utilizar los resultados intermedios materializado en las relaciones temporales para evaluar el próximo nivel de operaciones.

 Ejemplo, en base a la figura, se calcula y se almacena la operación

Luego se calcula la reunión de la operación almacenada con la

relación customer, y finalmente calcular la proyección sobre

customer-name.

)

(

2500

account

balance

(42)

Materialización

Materialización

(Cont.)

(Cont.)

 El coste de una evaluación materializada no es simplemente la suma

de los costes de las operaciones involucradas. Cuando se calcularon los costes estimados de los algoritmos se ignoró el coste de escribir el resultado de la operación en disco. Para calcular el coste de evaluar una expresión como la que se ha hecho hay que añadir los costes de todas las operaciones, incluyendo el coste de escribir los resultados intermedios en disco.

 La memoria intermedia doble (usando dos memorias intermedias,

una donde progresa la ejecución del algoritmo mientras que la otra se está copiando) permite que el algoritmo se ejecute más rápidamente mediante la ejecución en paralelo de acciones en la CPU con

(43)

Encausamiento

Encausamiento

Evaluación encausada: Evalúa varias operaciones simultáneamente,

pasando los resultados de una operación a la siguiente.

 Ejemplo, en el árbol de expresión previo, no se almacena el resultado de

la operación

 En cambio, pasa tuplas directamente a la reunión.. Similarmente, no

almacena el resultado de la reunión, pasa las tuplas directamente a la proyección.

 Mucho más barato que la materialización: no es necesario guardar una

relación temporal en el disco.

 El encausamiento no siempre puede ser posible– Ejemplo, Ordenación y

Reunión por asociación.

)

(

2500

account

balance

Referencias

Documento similar

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,