Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouTalita Granado Alterado mais de 10 anos atrás
1
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC 2013-1
2
Projeção SELECT DISTINCT R.A, R.B FROM R Duas etapas principais : 1. Remover colunas indesejáveis 2. Eliminar as duplicatas (o mais difícil)
3
Projeção usando Ordenação 1. Scan de R para produzir as tuplas projetadas (sem os campos indesejáveis) 2. Ordena o resultado, utilizando a combinação de todos os atributos da projeção como chave da ordenação 3. Scan do resultado ordenado para eliminação das tuplas adjacentes repetidas.
4
Custo Scan de R = M I/Os T = número de páginas produzidas da relação projetada (T = c.M onde c < 1) T depende do número e do tamanho dos campos removidos em cada tupla. Custo passo 1 = M + T Custo passo 2 (Ordenação) = 2T ([log B-1 T/B] + 1) Custo passo 3 = T Custo total = M + T + 2T ([log B-1 T/B] + 1) +T
5
Exemplo M = 1000 Cada tupla de M ocupa 40 bytes Cada tupla projetada ocupa 10 bytes Logo T = 250 páginas B = 40 páginas Custo passo 1 = 1250 Custo passo 2 = 2. 250 ([log 39 250/40]+ 1) = 2. 250 ([log 39 6,25] + 1) = 2.250. 2 = 1000 Custo passo 3 = 250 Custo total = 2500 I/Os
6
Otimização Pode-se projetar as tuplas durante a primeira iteração da ordenação. A partir da segunda iteração da ordenação já vai-se eliminando as duplicatas à medida que são criados os subarquivos ordenados.
7
Exemplo M = 1000 T = Relação projetada = 250 páginas B = tamanho do buffer = 40 páginas Passo 0 da ordenação: 1000 páginas são lidas em memória durante 1000/40 = 25 etapas A cada etapa é criado um subarquivo em disco, ordenado com 40/4 = 10 páginas No total, são 250 páginas escritas no disco, divididas em 25 subarquivos ordenados e projetados com 10 páginas cada um. Passo 1 da ordenação: Há espaço suficiente na memória (40 > 25) para se fazer o merge dos 25 subarquivos e simultaneamente eliminar-se as duplicatas. São lidas 250 páginas Resultado: um único arquivo ordenado, projetado e onde as duplicatas foram eliminadas. Custo total = 1250 + 250 = 1500 I/Os
8
Projeção usando Hashing Usada quando se tem um tamanho de buffer B razoável com relação ao tamanho da relação R. Usa a idéia do algoritmo de Hash Join de Junção Fase do Particionamento + Projeção: produz como resultado a relação R projetada (ainda sem a eliminação de duplicatas), organizada em partições, segundo uma função hash h, calculada sobre os atributos da projeção. Fase da Eliminação das Duplicatas. Supomos que tamanho de uma partição B Para cada partição carregada no buffer, varre-se a partição e elimina- se as duplicatas. Todos os registros de dados com valores duplicados estão numa mesma partição.
9
Fase do Particionamento e Projeção de R Buffer tem capacidade para B páginas, onde B – 1 = número de partições Página de R Relação R Disco Relação R Particionada e Projetada Pt 1Pt 2Pt 3Pt 6 Pt 5 Pt 4 Projeta e Distribui usando hash h Sobre a combinação dos atributos projetados M páginas T páginas
10
Fase da Eliminação de Duplicatas Buffer tem capacidade para B páginas, onde B = tamanho de uma partição de R Relação R particionada Disco Relação R sem duplicatas Partição n de R (inteira) Página de R sem duplicatas
11
Tamanho mínimo de Buffer Fase do Particionamento + Projeção Cria-se B-1 partições Registros de cada partição são projetados T = tamanho da relação projetada R Tamanho de uma partição = T/B-1 Fase de Eliminação das Duplicatas B T/B-1 (B-1).B T (B-1).B > (B-1).(B-1) T Se B-1 T teremos que (B-1).B T Logo, basta considerar B T + 1 ou equivalentemente B > T
12
Exemplo M = 1000 T = Relação projetada = 250 páginas B = tamanho do buffer = 40 páginas Fase de Particionamento 1000 páginas são lidas em memória 250 páginas são gravadas 250 = 15,81 40 > 15,81. Logo, temos espaço suficiente no buffer para realizar a fase de eliminação de duplicatas Fase de Eliminação de Duplicatas 250 páginas são lidas Custo total = 1250 + 250 = 1500 I/Os
13
Projeção nos SGBDs comerciais Informix: usa o algoritmo baseado em hash IBM DB2, Oracle 8 e o Sybase ASE: usa o algoritmo baseado em ordenação Microsoft SQL Server, Sybase ASIQ: implementam os algoritmos baseados em Hash e ordenação.
14
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
15
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
16
Técnicas para implementar UNION e EXCEPT 1. Baseadas em Ordenação 2. Baseadas em Hash
17
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.
18
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
19
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.
20
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.
21
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 2. 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 3. Se T1.r > T2.r Atualiza o marcador de T2 para o próximo registro de T2, diferente de T2.r
22
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
23
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
24
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
25
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.
26
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. T2
27
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
28
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)
29
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
30
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
31
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
32
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 ).
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.