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

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

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

Apresentações semelhantes


Apresentação em tema: "Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS."— Transcrição da apresentação:

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

2 Seleção SELECT * FROM R WHERE R.A op a op: =,,, Tamanho de R = M páginas Número de tuplas por página = Pr

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

4 R sem índice, mas ordenada por A Busca binária até encontrar a primeira tupla da resposta. Custo da busca = log 2 M = log = 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 = log 2 M + custo de escanear o restante da relação R.

5 R tem índice B+ tree em A Condição de seleção : A > a *27*33*37*46*40*51*55*63*97* *15* SELECT * FROM R WHERE A > 34 Indice agrupado

6 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

7 R tem índice B+ tree em A Condição de seleção : A > a *27*33*37*46*40*51*55*63*97* *15* SELECT * FROM R WHERE A > 34 Indice não agrupado Pid = 2 Pid = 10Pid = 7

8 R tem índice B+ tree em A, Condição de seleção: A > a Indice 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 = Custo = número de páginas contendo tuplas com A > a

9 Exercicio Calcular o custo de: Select * From R where A = a nos seguintes casos: Indice agrupado, B+ tree Indice não agrupado, B+ tree

10 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% 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: = 104 I/Os B+tree não-agrupado: 4 + N = N I/Os B+tree não-agrupado com arquivo de indice ordenado pelo page-id 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.

11 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

12 Exemplo Select * From R where R.name = Joe M = número de páginas de R = 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 custo da ordenação.

13 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

14 Condição de seleção em FNC (A 11 op a 11 OR... OR A n1 op a n1 ) AND (A 12 op a 12 OR... OR A n2 op a n2 ) AND.... AND (A 1k op a 1k OR... OR A nk op a nk ) Exemplo: (day < 8/9/2002 OR R.name = Joe) AND (R.id = 5 OR R.name = Joe)

15 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.

16 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 A i = a i 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).

17 Exemplo Condição: day 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 ε E1 e ε E2 então e entram na intersecção Recupera-se as tuplas do banco de dadas, através das entradas contidas na intersecção.

18 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

19 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)

20 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.

21 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 (log B-1 T + 1) Custo passo 3 = T Custo total = M + T + 2T (log B-1 T + 1) +T

22 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 = (log ) = = 1000 Custo passo 3 = 250 Custo total = 2500 I/Os

23 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.

24 Exemplo M = 1000 T = 250 páginas B = 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 = = 1500 I/Os


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

Apresentações semelhantes


Anúncios Google