Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

24
Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS

Transcript of Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Page 1: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Algoritmos para Seleção e Projeção

AULA 15

SISTEMAS DE BANCO DE DADOS

Page 2: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

SeleçãoSELECT *

FROM R

WHERE R.A op ‘a’

op: =, < , > , ≤ , ≥

Tamanho de R = M páginas

Número de tuplas por página = Pr

Page 3: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R não ordenada, não tem índice em A Melhor solução = scan da relação R Custo = M I/Os

Page 4: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R sem índice, mas ordenada por A Busca binária até encontrar a primeira tupla da resposta.

Custo da busca = log2M = log21000 = 10 I/Os Scan de R a partir desta tupla para recuperar o resto das

tuplas que casam. Custo : depende do número de tuplas que satisfazem a condição da

resposta. Se A é chave de R e op é a igualdade: custo = 1 Se A não é chave de R , op é a igualdade, as tuplas com valores

iguais do atributo A cabem em X páginas (distribuição uniforme) então Custo = X

Em geral Custo total = log2M + custo de escanear o restante da relação R.

Page 5: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R tem índice B+ tree em ACondição de seleção : A > a

40

5120

20* 27* 33* 37* 46*40* 51* 55* 63* 97*

3363

10* 15*

SELECT * FROM RWHERE A > 34

<37, a0, b0>

<40, a1, b1>

<46, a2, b2>

<51, a3, b3>

<55, a4, b4>

Indice agrupado <63, a0, b0>

<97, a1, b1>

<99, a2, b2>

<101, a3, b3>

<102, a4, b4>

<110, a0, b0>

<120, a1, b1>

<122, a2, b2>

<200, a3, b3>

<239, a4, b4>

Page 6: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R tem índice B+ tree em A, Condição de seleção : A > aÍndice é agrupado Custo = 2 a 4 I/Os até encontrar a primeira entrada

do arquivo de índice. Custo de recuperar todas as tuplas no banco de dados

As tuplas satisfazendo a condição de seleção estão contidas em p.M páginas, onde 1 registro de dados = p registros de índices M = número de páginas do arquivo de indice contendo entradas

com chave A > a Custo Total de recuperar todas as tuplas:

4 + p.M

Page 7: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R tem índice B+ tree em ACondição de seleção : A > a

40

5120

20* 27* 33* 37* 46*40* 51* 55* 63* 97*

3363

10* 15*

SELECT * FROM RWHERE A > 34

<37, a0, b0>

<73, a1, b1>

<19, a2, b2>

<10, a3, b3>

<97, a4, b4>

Indice não agrupado <110, a0, b0>

<120, a1, b1>

<46, a2, b2>

<200, a3, b3>

<239, a4, b4>Pid = 2

<40, a0, b0>

<18, a1, b1>

<99, a2, b2>

<101, a3, b3>

<102, a4, b4>Pid = 10 Pid = 7

Page 8: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R tem índice B+ tree em A, Condição de seleção: A > aIndice não agrupado: Custo de recuperar todas as tuplas no banco

de dados após encontrar a primeira entrada no arquivo de indice pode ser igual ao número de tuplas satisfazendo a condição A > a

Solução: ordenar as entradas do arquivo de indice pelo page-id do campo * Entrada do indice = < chave, page-id, slot-id> Custo = número de páginas contendo tuplas

com A > a

Page 9: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Exercicio Calcular o custo de:

Select * From R where A = a

nos seguintes casos: Indice agrupado, B+ tree Indice não agrupado, B+ tree

Page 10: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Exemplo Select * From R where R.name < ‘C%’ M = número de páginas de R = 1000 Nomes são uniformemente distribuídos com relação à letra inicial.

26 letras no alfabeto Portanto: 10% dos nomes satisfazem < ‘C%’ 10000 tuplas satisfazem < ‘C%’ 100 páginas N = número de páginas do arquivo de indice com R.name < ‘C%’

Custo Indice : B+tree agrupado: 4 + 100 = 104 I/Os B+tree não-agrupado: 4 + N + 10000 = 10004 + N I/Os B+tree não-agrupado com arquivo de indice ordenado pelo page-id

4 + 100 + custo de se ordenar o arquivo de indice pelo page-id B+tree não-agrupado: dependendo do número de tuplas satisfazendo a

condição de seleção e a distribuição destas tuplas, a melhor solução é não utilizar o indice e fazer um simples scan do arquivo.

Page 11: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

R tem indice Hash em A Condição de seleção : A = a Custo de se localizar a página do bucket no

arquivo de índice: 1 a 2 I/Os (depende se há diretório de ponteiros)

Custo para se obter as tuplas satisfazendo a condição de seleção: depende se o índice é agrupado ou não. Se A = chave de R: custo = 1 I/O

Page 12: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

ExemploSelect * From R where R.name = ‘Joe’M = número de páginas de R = 1000100 tuplas com R.name = ‘Joe’ Custo de se encontrar o bucket correspondente a

‘Joe’ no indice = 1 a 2 I/O Custo de se obter as tuplas no banco de dados =

varia de 1 a 100 I/Os Se as 100 tuplas estão espalhadas em 5 páginas,

ordenando-se o indice pelo page-id, pode-se recuperar estas tuplas em 5 I/Os.

Logo, o custo total é de 2 + 5 + custo da ordenação.

Page 13: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Condições Gerais de Seleção SELECT *

FROM R

WHERE R.A op ‘a’ AND R.B op ‘b’

op: =, < , > , ≤ , ≥

Tamanho de R = M páginas

Número de tuplas por página = Pr

Page 14: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Condição de seleção em FNC (A11 op a11 OR ... OR An1 op an1) AND

(A12 op a12 OR ... OR An2 op an2) AND .... AND (A1k op a1k OR ... OR Ank op ank)

Exemplo:

(day < 8/9/2002 OR R.name = ‘Joe’) AND (R.id = 5 OR R.name = ‘Joe’)

Page 15: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Caso 1: sem OR Solução 1 : um só indice

utilizar indice num atributo que aparece na condição de seleção, que é mais ‘seletivo’

A medida que se recupera as tuplas satisfazendo esta condição elimina-se as tuplas que não satisfazem alguma das outras condições.

Page 16: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Caso 1: sem OR Solução 2: diversos indices

Utiliza-se diversos indices, sobre alguns atributos aparecendo na condição de seleção.

Para cada condição Ai = ai recupera-se as páginas do arquivo de indice satisfazendo esta condição.

Ordena-se as entradas de cada indice pelo page-id Faz-se a intersecção das entradas com os mesmos page-ids

Recupera-se as tuplas contidas nas páginas indicadas pelos page-ids e elimina-se aquelas que não satisfazem as outras condições da seleção (para as quais não foram considerados indices).

Page 17: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Exemplo Condição:

day < 8/9/2002 AND R.id = 5 AND AND S.age > 35 Usando B+tree em day recupera-se o conjunto das entradas

E1 com day < 8/9/2002 Usando um indice Hash em R.id recupera-se o conjunto de

entradas E2 com R.id = 5 Ordena-se cada conjunto de entradas pelo page-ids Considera-se a intersecção das entradas pelos rids <a1,p1,s1>

ε E1 e <a2, p1, s1> ε E2 então <a1,p1,s1> e <a2, p1, s1> entram na intersecção

Recupera-se as tuplas do banco de dadas, através das entradas contidas na intersecção.

Page 18: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Caso 2 : com OR A = a1 OR B = b1

Indice em A, não há indice em B Melhor solução : scan (o indice em A não ajuda nada)

(A = a1 OR B = b1) AND C = c1 Indice em A, não há indice em B, indice em C Melhor solução: utilizar o indice em C

A = a1 OR B = b1 Indice em A, indice em B Melhor solução:

recupera-se as entradas no arquivo de indice para A = a1 : recupera-se as entradas no arquivo de indice para B = b1 : Faz-se a união destes dois conjuntos de entradas Ordena-se este conjunto pela page-id

Page 19: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

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)

Page 20: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

Projeção usando Ordenação1. 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.

Page 21: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

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 suprimidos em cada tupla.

Custo passo 1 = M + T Custo passo 2 (Ordenação) = 2T (logB-1T + 1) Custo passo 3 = T

Custo total = M + T + 2T (logB-1T + 1) +T

Page 22: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

ExemploM = 1000Cada tupla de M ocupa 40 bytesCada tupla projetada ocupa 10 bytesLogo T = 250 páginasB = 40 páginas Custo passo 1 = 1250 Custo passo 2 = 2. 250 (log39 250 + 1) = 2. 250 . 2 = 1000 Custo passo 3 = 250 Custo total = 2500 I/Os

Page 23: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

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.

Page 24: Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS.

ExemploM = 1000T = 250 páginasB = 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 lidos 250 páginas Resultado: um único arquivo ordenado, projetado e onde as duplicatas foram

eliminadas. Custo total = 1250 + 250 = 1500 I/Os