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

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

Algoritmos para Seleção Simples AULA 18 Profa. Sandra de Amo GBC053 – BCC 2013-1.

Apresentações semelhantes


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

1 Algoritmos para Seleção Simples AULA 18 Profa. Sandra de Amo GBC053 – BCC

2 Seleção com condição simples 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. Em geral o custo total = log 2 M + K onde K = número de páginas satisfazendo a condição da consulta.

5 R sem índice, mas ordenada por A Custo de encontrar o número de páginas X satisfazendo a condição de seleção Condição (A = a) Se A é chave de R então X = 1 Se A não é chave de R e se a distribuição dos valores de A for uniforme: X = M/Val, onde Val = núm. de valores do atributo A Condição (A > a) Supondo uma distribuição uniforme dos valores do atributo A Seja K = porcentagem dos valores de A correspondendo aos valores > a Temos então: X = K*M

6 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

7 R tem índice B+ tree em A – agrupado 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 (e esparso)

8 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 Como o índice é agrupado basta : encontrar a primeira página P1 contendo registro com A >a Seja pgId = identificador da página P1 Número de páginas de dados a serem lidas: p.I I = num. de pag. 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 índices Custo Total de recuperar todas as tuplas: 4 + p.I

9 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 (e denso) Pid = 10Pid = 7 Pid = 2 Pid = 1

10 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 pelo page-id do campo rid as entradas do arquivo de indice que verificam a condição de seleção Entrada do indice = Custo = número de páginas contendo tuplas com A > a

11 3, (2,3) 4, (5,7) 4, (2,15) 5, (5,7) 7, (4,9) 9, (1,3) Páginas de dados apontadas pelo indice 1,3,6 R tem índice B+ tree em A – Não agrupado Condição de seleção : A > 10 (9,a,b) (10,a1,b1) (15, c, d) (3,x1, y1) (4,x2,y2) pgId = 1pgId = 2pgId = 3pgId = 4pgId = 5 (10,x1, y1) 9, (4,12) 10, (3,10) 10, (1,1) 15, (6,7) 15, (1,9) 15, (3,3) 18, (6,12) 18, (3,10) pgId = 6 (15,x3, y3) (18,x4, y4) (7,a2,b2) (9,a3,b3) (4,a4,b4) (5,a5,b5) (15,x5, y5) (18,x6, y6)

12 Exercício para entregar Calcular o custo de: Select * From R where A = a nos seguintes casos: Indice agrupado, B+ tree, denso 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

13 R tem índice B+ tree em A esparso – agrupado - Condição de seleção : A = SELECT * FROM R WHERE A = 38 Indice Esparso e agrupado Pid = 8 Pid = * 15* 21* 33* 45* 56* CUSTO = 2 páginas de Indice (i1 e i2) + 1 pág. dados (d2) = 3 I/Os Quando o índice é esparso é preciso carregar a página de dados (no caso pg de Pid=8) e fazer busca binária para encontrar o registro (caso a chave não estiver no indice) Se a chave estiver no indice, encontra-se o registro de dados diretamente pelo seu rid i1 i2 d2

14 Exemplo Select * From R where R.name < C% M = número de páginas de R = tuplas por página tuplas em R Nomes são uniformemente distribuídos com relação à letra inicial. 26 letras no alfabeto Portanto: aproximadamente 10% dos nomes satisfazem R.name < C% (na verdade são (1/13)% = 7,7%) 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%

15 Exemplo – continuação Custo da busca usando o índice B-Tree B+tree agrupado: = 104 I/Os B+tree não-agrupado (pior caso) : 4 + N = N I/Os N = número de páginas do arquivo de índice correspondendo à condição de seleção 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) = N([log B-1 N/B] + 1) Custo da busca usando um Scan 1000 I/Os

16 Conclusão B+tree não-agrupado: dependendo do número N de páginas do arquivo de indice correspondendo a valores satisfazendo a condição de seleção e do 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 = ([1,74] + 1) = = 164 I/Os B = 3, N = 100 : Custo = ([5,07] + 1) = (6 + 1) = = 1504 I/Os Custo de 1 Scan de R = 1000 I/Os

17 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

18 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 í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 (isto é, as páginas contendo entradas satisfazendo a condição de seleção), pode-se recuperar estas tuplas em 5 I/Os. Logo, o custo total é de custo da ordenação.


Carregar ppt "Algoritmos para Seleção Simples AULA 18 Profa. Sandra de Amo GBC053 – BCC 2013-1."

Apresentações semelhantes


Anúncios Google