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

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

REVISÃO PARA 3a PROVA Gerência de Banco de Dados Profa. Sandra de Amo Disciplina GBC053 Bacharelado em Ciência da Computação.

Apresentações semelhantes


Apresentação em tema: "REVISÃO PARA 3a PROVA Gerência de Banco de Dados Profa. Sandra de Amo Disciplina GBC053 Bacharelado em Ciência da Computação."— Transcrição da apresentação:

1 REVISÃO PARA 3a PROVA Gerência de Banco de Dados Profa. Sandra de Amo Disciplina GBC053 Bacharelado em Ciência da Computação

2 Condições Gerais de Seleção SELECT * FROM R WHERE (R.A op a OR R.A op a1) AND (R.B op b OR R.B op b1) op: =,,, Tamanho de R = M páginas Número de tuplas por página = Pr

3 Caso 1: sem OR Um só índice – Criar índice para atributo que aparece na condição de seleção, com maiorseletividade – utilizar este índice para obter os registros satisfazendo a condição da chave do índice – A medida que se recupera as tuplas satisfazendo esta condição elimina-se as tuplas que não satisfazem alguma das outras condições. Diversos índices – 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 índice 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).

4 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 pelo page-id

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

6 Projeção usando Ordenação 1. Scan de R para produzir as tuplas projetadas (sem os campos indesejáveis) Custo passo 1 = M + T 2. Ordena o resultado, utilizando a combinação de todos os atributos da projeção como chave da ordenação Custo passo 2 (Ordenação) = 2T ([log B-1 T/B] + 1) 3. Scan do resultado ordenado para eliminação das tuplas adjacentes repetidas. Custo passo 3 = T 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 total = M + T + 2T ([log B-1 T/B] + 1) +T 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 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.

8 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

9 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

10 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

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

12 Fase da Intercalação Buffer pool Página de T1 Página de T2 Página de output 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

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

14 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 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

15 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 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

16 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 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

17 Fase da Diferença Buffer pool Página de T1 Página de T2 Página de output 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 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

18 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 > – 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

19 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

20 Algoritmos para Operador GROUP BY SELECT S.Status, AVG(S.Idade) FROM Sailors S GROUP BY S.Status Técnicas: Ordenação Hashing

21 Algoritmo para GROUP BY baseado em ordenação Etapa 1: Ordena-se a relação pelo atributo do Group by Etapa 2: Faz-se um scan da relação ordenada armazenando-se na variável Agreg o resultado da operação de agregação para cada grupo Custos: Etapa 1 = 2M([Log B-1 M/B] + 1) Etapa 2 = M Custo total = 2M([Log B-1 M/B] + 1) + M

22 Algoritmo para GROUP BY baseado em Hash Fase do Particionamento – Particiona a relação R pelos atributos de agrupamento – do GROUP BY – Desta maneira: elementos de um mesmo grupo só podem estar numa mesma partição. – O particionamento é feito de modo que cada partição caiba inteira na memória. – Para isso, é preciso que o tamanho do buffer (B) seja > M onde M = número de páginas da relação R. Fase do Agrupamento – Carrega partição inteira de R – Aplica algoritmo de ordenação interna pelos atributos do agrupamento (Group By). – Varre a partição (ordenada) e calcula-se o resultado da função de agregação sobre cada grupo CUSTO = 2M + M = 3M

23 Esquema Geral do Otimizador SQL Parser Consulta SQL usuário Coleção de blocos simples B1, B2,...., Bn Otimizador Melhor Plano de execução Bloco SQL simples Plano canônico Cria planos alternativos Planos alternativos Estima custos Melhor Plano de execução Transforma em Algebra

24 Decompor consulta em blocos simples Um bloco SQL simples é um comando sem subconsultas aninhadas, onde aparece – somente um SELECT, – somente um FROM – no máximo um WHERE (em FNC) – no máximo um GROUP BY – no máximo um HAVING

25 Exemplo SELECT DISTINCT S.sid, Min (R.day) FROM Sailors S, Reservas R, Boats B WHERE S.sid = R.sid AND R.bid = B.bid AND B.color = red AND S.rating = ( SELECT MAX (S2.rating) FROM Sailors S2 ) GROUP BY S.sid HAVING COUNT (*) > 1

26 Exemplo Bloco 1 : bloco interno SELECT MAX (S2.rating) FROM Sailors S2 Resultado : Relação temporária T(A) Bloco 2 : bloco externo SELECT DISTINCT S.sid, Min (R.day) FROM Sailors S, Reservas R, Boats B, T WHERE S.sid = R.sid AND R.bid = B.bid AND B.color = red AND S.rating = T.A GROUP BY S.sid HAVING COUNT (*) > 1

27 Plano de Execução Canônico σ Π A,B,...,C X R1 R2Rn Resultado R é ordenado O GROUP BY é executado sobre o resultado R ordenado. O HAVING é aplicado para eliminar certos grupos. Funções de agregação (MIN,MAX,...) são executadas sobre os grupos finais Operador de Projeção é executado por último. Resultado R

28 PLANOS ALTERNATIVOS Equivalências de Expressões Algébricas Seleção – σ c1 ^ c2 ^... ^ cn (R) = σ c1 (σ c2 (... (σ cn (R))...) Vantagens: Permite realizar uma única seleção, verificando todas as condições simultaneamente, em vez de se executar n seleções separadamente em sequência. – σ c1 (σ c2 (R) ) = σ c2 (σ c1 (R) ) As condições podem ser executadas em qualquer ordem. Vantagem: executar a condição mais seletiva primeiro.

29 Equivalências de Expressões Algébricas Projeção – Π X1 (R) = Π X1 (Π X2 (... (Π Xn (R))...) Onde – cada X i é um conjunto de atributos – X i está contido em X i+1 – Exemplo: Π A (R) = Π A (Π AB (Π ABC (R))) Vantagem: Reduz o número de execuções do algoritmo de projeção

30 Equivalências de Expressões Algébricas Produto Cartesiano e Junção – Associativa R (S T) = (R S) T – Comutativa (R S) = (S R)

31 Equivalências de Expressões Algébricas Seleção e Projeção – Π X σ c (R) = σ c Π X (R) Onde todos os atributos aparecendo na condição c estão contidos em X

32 Equivalências de Expressões Algébricas Seleção e Junção – R S = σ c (R S) – σ c (R S) = (σ c R S) se todos os atributos de c são atributos de R e não de S – σ c (R S) = (σ c R S) se todos os atributos de c são atributos de R e não de S Vantagens: junção pode ser feita entre relações menores. c

33 Equivalências de Expressões Algébricas Projeção e Produto Cartesiano – Π X (R S) = (Π Y R Π Z S) Y = atributos de X que aparecem em R Z = atributos de X que aparecem em S – Exemplo: Π AB (R S) = (Π A R Π B S) onde R(AC) e S(BC) Vantagem: Produto cartesiano pode ser feito entre relações menores.

34 Equivalências de Expressões Algébricas Projeção e Junção – Π X (R S) = (Π Y R Π Z S) Y = atributos de X que aparecem em R Z = atributos de X que aparecem em S Os atributos envolvidos na condição de junção c devem aparecer em X – Exemplo : R(ACD), S(BEC), X = {A, B, C}, condição de junção : R.C = S.C Π ABC (R S) = (Π AC R Π BC S) c cc c

35 ESTIMATIVAS DE CUSTOS DE PLANOS DE EXECUÇÃO Uso de estatísticas sobre tabelas e indices armazenadas no catálogo Uso de Histogramas atualizados periodicamente e mantidos no catálogo do sistema.

36 Estatísticas sobre tabelas e indices armazenadas no catálogo: NTuples (R) = Número de tuplas da tabela R NPages(R) = Número de páginas da tabela R NKeys(I) = número de chaves distintas do Indice I INPages(I) = número de páginas do indice I (no caso de B+tree = número de folhas) IHeight(I) = Altura do Indice (no caso de B+tree) ILow(I) = menor valor de chave do indice I IHigh(I) = maior valor de chave do indice I

37 Pipeline versus Tabelas Materializadas Pipeline : resultado de uma operação é transferido para a próxima operação sem a criação de uma tabela em disco. Economia de custos de armazenamento e de leitura posterior Sempre que o algoritmo do operador para o qual é transferido o resultado permitir, a técnica de pipeline é utilizada.

38 Estimativa de Custos de um Plano de Execução Para cada nó da árvore N da árvore, seja Op(N) a operação associada a N. Tarefas do Estimador de Custos Estimar do custo de Op(N) Estimar o tamanho do resultado de Op(N)

39 Estimativa do Tamanho do Resultado SELECT FROM WHERE Número máximo de tuplas no resultado = M1.M2....Mk, onde Mi = tamanho de Ri Cláusula WHERE atua como um redutor desta estimativa Cada condição do WHERE tem o seu fator de redução próprio

40 Fatores de Redução R.A = valor – Fator de redução = 1/NKeys(I), caso exista um indice I com chave A para a relação R – Fator de redução = 1/10, caso contrário (ou utiliza-se estatísticas mantidas no catálogo sobre a distribuição dos valores dos atributos) R.A = R.B – Fator de redução = 1/Max(NKeys(IA),NKeys(IB)) se existe indices IA e IB com chave A e B respectivamente. – Fator de redução = 1/NKeys(I) se somente um dos atributos é chave de um indice I – Fator de redução = 1/10 caso contrário.

41 Fatores de Redução R.A > valor – Fator de redução = (High(I) – valor) / High(I) – Low(I) caso exista um indice I com chave A para a relação R – Fator de redução = fração < ½ caso não exista indice ou se o valor não é aritmético R.A IN (Lista de valores) – Fator de redução = N*(fator de redução de R.A = valor), onde N = núm. de itens – Fator de redução = fração < ½ caso não exista índice ou se o valor não é aritmético.

42 Fatores de Redução R.A IN (Subconsulta) – Fator de redução: M/N onde M = tamanho do resultado da Subconsulta N = número de valores do atributo R.A NOT (Cond) – Fator de redução: (1 – Fator de Redução(Cond)) Fator de Redução da Projeção = fração equivalente ao tamanho dos atributos que não são eliminados.

43 Histograma Distribuição real Distribuição uniforme

44 Histogramas Supõe-se um conjunto de N tuplas, com valores do atributo A variando de v1 a v2. Supõe-se que para cada valor v do atributo A, v1 v v2, temos o número de tuplas N(v) com este valor para Estimativas do número de tuplas com valor x: Estimativa exata : N(x) Estimativa usando distribuição uniforme: Média aritméticas dos valores

45 Histogramas por Largura Histograma por largura : particiona-se o conjunto de valores em K grupos, com o mesmo número de valores cada um. Para cada grupo de valores, determina a média do número de tuplas do grupo Como estimar N(x) usando um histograma por Largura Estimativa do número de tuplas com valor x = média do número de tuplas do grupo ao qual x pertence.

46 Histograma por largura

47 Uso do Histograma por largura Distribuição uniforme: 3 tuplas Distribuição histograma por largura: 5 tuplas Qual a estimativa da quantidade de tuplas com AGE > 13 ?

48 Histogramas em Profundidade Histograma em Profundidade : particiona-se o conjunto de valores em X grupos, com aproximadamente o mesmo número de tuplas em cada um. Para cada grupo de valores, determina a média do número de tuplas para cada valor do grupo. Como estimar N(x) usando um histograma por Comprimento Verifica em que grupo de valores o valor x se encaixa. N(x) = média do número de tuplas associado aos valores deste grupo.

49 Histograma por profundidade tuplas 7 tuplas tuplas9 tuplas 6

50 Histograma por profundidade tuplas 7 tuplas tuplas9 tuplas Distribuição histograma por profundidade = 9 tuplas 6 Distribuição uniforme: 3 tuplas Distribuição histograma por largura: 5 tuplas Qual a estimativa da quantidade de tuplas com AGE > 13 ?

51 Exercicio tuplas, 20 valores variando de 1 a Descrever uma distribuição uniforme para estes dados. 2. Fazer um histograma por largura. 3. Estimar o número de tuplas com valores > 30, supondo uma distribuição uniforme dos dados. 4. Estimar o número de tuplas com valores > 30, supondo uma distribuição de acordo com o histograma por largura.

52 100 tuplas, 20 valores variando de 1 a Fazer um histograma por profundidade. 2. Estimar o número de tuplas com valores > 30, supondo uma distribuição de acordo com o histograma por largura.

53 Histogramas comprimidos Histogramas por profundidade produzem melhores estimativas do que histogramas por largura Histogramas comprimidos – Mantém contadores para valores mais frequentes (por exemplo idade = 7 e idade = 14) – Para os outros valores, mantém um histograma por profundidade (de preferência) ou por largura. Muitos SGBDs utilizam histograma por profundidade, alguns utilizam mesmo histogramas comprimidos.

54 GERAÇÃO DE PLANOS COM MÚLTIPLAS RELAÇÕES A B C D AB C D AB C D B A CD PLANOS LINEARES PLANO BUSHY PLANO POR PROFUNDIDADE À ESQUERDA

55 Planos por profundidade à esquerda São os únicos a serem considerados: – Quanto maior o número de joins maior o número de planos alternativos. Por isto opta-se por considerar somente os left-deep. – Planos left-deep permitem utilizar estratégia pipeline à esquerda com a relação externa. A relação interna é sempre uma relação de base (materializada). – Repare que não é possível utilizar pipeline à direita de um join. É sempre necessário que a relação interna esteja disponível em sua integralidade, pois é varrida diversas vezes. – No caso de planos left-deep, este problema não acontece, pois o filho à direita de um Join é sempre uma relação de base (materializada).


Carregar ppt "REVISÃO PARA 3a PROVA Gerência de Banco de Dados Profa. Sandra de Amo Disciplina GBC053 Bacharelado em Ciência da Computação."

Apresentações semelhantes


Anúncios Google