A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC 2012-2.

Apresentações semelhantes


Apresentação em tema: "Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC 2012-2."— Transcrição da apresentação:

1 Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC 2012-2

2 Operações de Conjuntos (Select B.Bid From Barcos BT1(Bid) Where B.Cor = Verde) UNION (Select R.Bid From Reservas R T2(Bid) Where R.Day = 09/05/2012) T1 U T2 Select B.Bid From Barcos BT1(Bid) Where B.Cor = Verde) EXCEPT (Select R.Bid From Reservas R T2(Bid) Where R.Day = 09/05/2012) T1 - T2

3 Operações de Conjuntos (Select B.Bid From Barcos BT1(Bid) Where B.Cor = Verde) INTERSECT (Select R.Bid From Reservas R T2(Bid) Where R.Day = 09/05/2012) T1 T2 Consulta equivalente a T1 T2

4 Técnicas para implementar UNION e EXCEPT 1. Baseadas em Ordenação 2. Baseadas em Hash

5 UNION: algoritmo baseado em ordenação Fase da Ordenação: Ordena T1 por todos os atributos Ordena T2 por todos os atributos Fase da Intercalação Intercala as tuplas de T1 e T2 de modo a obter um único arquivo ordenado e sem duplicatas.

6 Fase da Intercalação Buffer pool Página de T1 Página de T2 Página de output 1 1 5 7 9 11 2 2 6 8 9 13 1 2 5 6 7 8 9 11 CUSTO DA INTERCALAÇÃO = M + N M = número de páginas de T1 N = número de páginas de T2 CUSTO TOTAL = 2M ([Log B-1 M/B] + 1) + 2N ([Log B-1 N/B] + 1) + M + N 13

7 Exercicio para entregar Escrever um algoritmo otimizado para fazer a intercalação junto com a ordenação Etapa 0: Cria-se M/B subarquivos de T1 e M/B subarquivos de T2 ordenados em memória principal Etapa 1: Ordena-se e simultaneamente intercala-se as duas tabelas. Calcular o custo deste algoritmo otimizado Qual o tamanho do buffer para poder utilizar o algoritmo otimizado ? Sugestão: utilizar ideia análoga à ideia do algoritmo sort-merge join otimizado.

8 EXCEPT: algoritmo baseado em ordenação Fase da Ordenação: Ordena T1 por todos os atributos Ordena T2 por todos os atributos Fase da Diferença Intercala as tuplas de T1 e T2 de modo a obter um único arquivo ordenado e sem duplicatas.

9 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 1 1 5 7 9 11 2 2 6 8 9 13 1 1.Se T1.r < T2.r Insere T1.r no Output Atualiza o marcador de T1 para o próximo registro de T1 diferente de T1.r 3. Se T1.r = T2.r Atualiza os marcadores de T1 e T2 para os próximos registros de T1 dif. de T1.r e de T2 dif. de T2. r 4. Se T1.r > T2.r Atualiza o marcador de T2 para o próximo registro de T2, diferente de T2.r

10 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 1 1 5 7 9 11 2 2 6 8 9 13 1 5 1.Se T1.r < T2.r Insere T1.r no Output Atualiza o marcador de T1 para o próximo registro de T1 diferente de T1.r 3. Se T1.r = T2.r Atualiza os marcadores de T1 e T2 para os próximos registros de T1 dif. de T1.r e de T2 dif. de T2. r 4. Se T1.r > T2.r Atualiza o marcador de T2 para o próximo registro de T2, diferente de T2.r

11 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 1 1 5 7 9 11 2 2 6 8 9 13 1 5 7 1.Se T1.r < T2.r Insere T1.r no Output Atualiza o marcador de T1 para o próximo registro de T1 diferente de T1.r 3. Se T1.r = T2.r Atualiza os marcadores de T1 e T2 para os próximos registros de T1 dif. de T1.r e de T2 dif. de T2. r 4. Se T1.r > T2.r Atualiza o marcador de T2 para o próximo registro de T2, diferente de T2.r

12 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 1 1 5 7 9 11 2 2 6 8 9 13 1 5 7 11 CUSTO DA DIFERENÇA = M + N M = número de páginas de T1 N = número de páginas de T2 CUSTO TOTAL = 2M ([Log B-1 M/B] + 1) + 2N ([Log B-1 N/B] + 1) + M + N

13 Exercício para entregar Escrever um algoritmo otimizado para fazer a diferença junto com a ordenação Etapa 0: Cria-se M/B subarquivos de T1 e M/B subarquivos de T2 ordenados em memória principal Etapa 1: Ordena-se e simultaneamente faz-se a diferença das duas tabelas. Calcular o custo deste algoritmo otimizado Qual o tamanho do buffer para poder utilizar o algoritmo otimizado ? Sugestão: utilizar ideia análoga à ideia do algoritmo sort-merge join otimizado.

14 EXCEPT: algoritmo baseado em hash Fase do Particionamento: Particiona T1 em B-1 partições usando o buffer Particiona T2 em B-1 partições usando o buffer Fase da Diferença Carrega a partição inteira n de T2 no buffer: isto é possível se B > (Prove !) Ordena internamente os elementos da partição n e elimina as duplicatas Para cada página da partição n de T1, ordena internamente e elimina as duplicatas. Para cada tupla t da partição n de T1, varre a partição n de T2 (que está em memória) e verifica se t está nesta partição. Se não estiver, coloca-a no resultado. T1

15 UNION: algoritmo baseado em hash Fase da Particionamento: Particiona T1 em B-1 partições usando o buffer Particiona T2 em B-1 partições usando o buffer Fase da União Carrega a partição inteira n de T1 no buffer: isto é possível se B > (Prove !) Ordena internamente os elementos da partição n e elimina as duplicatas Para cada página da partição n de T2, ordena internamente e elimina as duplicatas. Para cada tupla da partição n de T2, varre a partição n de T1 (que está em memória) e verifica se t está nesta partição. Se não estiver, coloque-a no resultado. Retorna a partição n de T1 e as páginas construídas com os elementos da correspondente partição n de T2 que faltavam na partição n de T1. T1

16 Cálculo de Custos (para os dois algoritmos) Fase do Particionamento: Custo de particionar T1 = 2M Custo de particionar T2 = 2N Custo do particiomento 2(M+N) Fase da Intercalação (ou da Diferença): M + N Custo total = 3(M + N)

17 Exemplo (Select B.Bid From Barcos B Where B.Cor = Verde) UNION (Select R.Bid From Reservas R Where R.Day = 01/05/2012) -Calcular o custo da consulta ao lado sabendo que: -Tamanho de Barcos = 1000 páginas (Barcos(Bid,Bnome,Cor)) -Campos têm o mesmo tamanho. -Temos 5 cores de barcos (azul, vermelho, amarelo, verde, preto). As cores estão uniformemente distribuídas entre os barcos. -Tamanho de Reservas(Bid,Sid,Day) = 3000 páginas -O tamanho do campo Day a soma dos tamanhos dos campos Sid e Bid -As reservas foram feitas em 100 dias e estão uniformemente distribuídas nestes dias. -Tamanho do buffer = 40 páginas

18 SOLUÇÃO Construção de T1(bid) Leitura de Barcos = 1000 Scan para selecionar e gravar somente os barcos verdes = 1000/5 = 200 O operador de projeção é executado on the fly (junto com o operador de seleção) – portanto sem custo Custo total = 1000 + 200/3 = 1067 Construção de T2(bid) Leitura de Reservas = 3000 Scan para selecionar e gravar somente as reservas do dia 01/05/2012 = 3000/100 = 30 O operador de projeção é executado on the fly (junto com o operador de seleção) – portanto sem custo Custo total = 3000 + 30/2 = 3015

19 CUSTO DA CONSULTA Custo do UNION: 2.67 ([Log 39 67/40] + 1) + 2.15 ([Log 39 15/40] + 1) + 67 + 15 = 134.2 + 30.2 + 82 = 268 + 60 + 82 = 410 Custo total da Consulta = 1067 + 3015 + 410 = 4492 I/O

20 Exercicio Considere a seguinte variante da consulta anterior, produzindo o mesmo resultado da outra variante (slide anterior): (Select Distinct B.Bid From Barcos B Where B.Cor = Verde) UNION (Select Distinct R.Bid From Reservas R Where R.Day = 01/05/2012) Considere o seguinte plano para esta consulta: Constrói T1(Bid) e T2(Bid) como no outro plano Ordena T1 e elimina as duplicatas. Grava o resultado T1. Ordena T2 e elimina as duplicatas. Grava o resultado T2. Executa a fase de intercalação do operador UNION sobre T1 e T2. Qual o plano mais eficiente ? (Suponha que cada tupla de T1 tem em média 3 duplicatas e cada tupla de T2 tem em média 2 duplicatas ).


Carregar ppt "Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC 2012-2."

Apresentações semelhantes


Anúncios Google