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

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

Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC 2012-2.

Apresentações semelhantes


Apresentação em tema: "Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC 2012-2."— Transcrição da apresentação:

1 Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC 2012-2

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 2 1000 = 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 com índice Indice = B-Tree Custo para encontrar a folha inicial satisfazendo a condição de seleção = 3 a 4 I/Os Custo de recuperar as entradas de DADOS satisfazendo a condição de seleção Custo depende de : Do número de tuplas de DADOS qualificadas Se o índice é agrupado ou não

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

7 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 satisfazendo a condição A > a As tuplas satisfazendo a condição de seleção estão contidas em p.I páginas, onde I = número de páginas do arquivo de índice contendo entradas com chave A > a p = fator que relaciona o tamanho de um registro de DADOS e um registro de indice 1 registro de dados = p registros de indices Custo Total de recuperar todas as tuplas: 4 + p.I

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

9 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

10 Exercício (1a Prova) Calcular o custo da consulta SELECT * FROM R WHERE R.A > 38 Resposta = 29 I/Os

11 Exercício Calcular o custo de: Select * From R where A = a nos seguintes casos: Indice agrupado, B+ tree Indice não agrupado (e denso !!), B+ tree Observação: Análise os casos em que A é chave primária de R e quando não é chave primária de R

12 Exemplo Select * From R where R.name < C% M = número de páginas de R = 1000 100 tuplas por página 100.000 tuplas em R Nomes são uniformemente distribuídos com relação à letra inicial. 26 letras no alfabeto Portanto: 10% dos nomes satisfazem R.name < C% 10000 tuplas satisfazem R.name < C% 100 páginas contendo tuplas satisfazendo R.name < C% N = número de páginas do arquivo de índice com R.name < C%

13 Exemplo – continuação Custo da busca usando o índice B-Tree B+tree agrupado: 4 + 100 = 104 I/Os B+tree não-agrupado (pior caso) : 4 + N + 10000 = 10004 + N I/Os B+tree não-agrupado com arquivo de índice ordenado pelo page-id 4 + (custo de carregar e ordenar as N páginas do arquivo de índice pelo page-id) + (custo de ler as 100 páginas de dados) = 104 + 2N([log B-1 N/B] + 1) Custo da busca usando um Scan 1000 I/Os

14 Conclusão B+tree não-agrupado: dependendo do número N de tuplas satisfazendo a condição de seleção, distribuição destas tuplas nas páginas de dados e o espaço disponível no buffer, a melhor solução é não utilizar o índice e fazer um simples scan do arquivo. Exemplo: B = 3, N = 10: Custo = 104 + 2.10.([1,74] + 1) = 104 + 20.3 = 164 I/Os B = 3, N = 100 : Custo = 104 + 2.100([5,07] + 1) = 104+200.(6 + 1) = 104 + 1400 = 1504 I/Os Custo de 1 Scan de R = 1000 I/Os

15 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

16 Exemplo Select * From R where R.name = Joe M = número de páginas de R = 1000 100 tuplas com R.name = Joe Custo de se encontrar o bucket correspondente a Joe no índice = 1 a 2 I/O Custo de se obter as tuplas no banco de dados = varia de 1 a 100 I/Os (caso o indice não for agrupado) 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.


Carregar ppt "Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC 2012-2."

Apresentações semelhantes


Anúncios Google