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

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

Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY AULA 23 Profa. Sandra de Amo GBC053 – BCC 2013-1.

Apresentações semelhantes


Apresentação em tema: "Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY AULA 23 Profa. Sandra de Amo GBC053 – BCC 2013-1."— Transcrição da apresentação:

1 Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY AULA 23 Profa. Sandra de Amo GBC053 – BCC

2 Operações de Agregação Select AVG(S.Idade) From Sailors S Algoritmo Básico: Scan da relação Sailors Mantém em uma variável Agreg as informações referentes à operação de AVG sobre os valores do atributo Idade Custo = custo de um scan da relação S SIDIdade Agreg 25

3 Operações de Conjuntos Select AVG(S.Idade) From Sailors S Algoritmo Básico: Scan da relação Sailors Mantém em uma variável Agreg as informações referentes à operação de AVG sobre os valores do atributo Idade Custo = custo de um scan da relação S SIDIdade Agreg 28,5

4 Operações de Conjuntos Select AVG(S.Idade) From Sailors S Algoritmo Básico: Scan da relação Sailors Mantém em uma variável Agreg as informações referentes à operação de AVG sobre os valores do atributo Idade Custo = custo de um scan da relação S SIDIdade Agreg 23,33

5 Operações de Agregação SUM AVG COUNT MIN MAX

6 Operador de Agrupamento: GROUP BY SELECT S.Status, AVG(S.Idade) FROM Sailors S GROUP BY S.Status Técnicas: Ordenação Hashing

7 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 Exercicio: Projetar um algoritmo otimizado (baseado em ordenação) para o GROUP BY e calcular seu custo

8 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 o número de partições seja B-1 e cada partição caiba inteira na memória em B-1 páginas. 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

9 Fase do Particionamento 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 Pt 1Pt 2Pt 3Pt 6 Pt 5 Pt 4 Distribui usando hash h sobre os atributos de agrupamento (presentes sa cláusula GROUP BY) M páginas

10 Fase do Agrupamento Buffer tem capacidade para B páginas, onde B – 1 é suficiente para conter uma partição inteira de R. Resultado Relação R particionada Disco Relação R Particionada M páginas T páginas Partição n Ordena pelos atributos do Group By Varre, calcula a operação de agregação sobre cada grupo e insere tupla (Val-Grupo,Val-Agreg) no resultado

11 Exemplo: Seja R(A,B,C) M = 1000 páginas, B = 41 Consulta: SELECT R.A, Sum(B) FROM R GROUP BY R.A 1. Fase do Particionamento: partições de 1000/40 = 25 páginas cada 2. Custo = = Resultado no disco após a fase do particionamento: 1000 páginas, particionadas em 40 partições, onde cada partição tem 25 páginas. 4. Registros com mesmo valor de A estão em uma mesma partição 2. Fase do Agrupamento 1. Para i = 1,..., Carrega-se partição i de 25 páginas 2. Ordena-se internamente 3. Calcula-se o resultado 4. Grava as 25 páginas da partição i 5. Custo = Custo total = = 3000

12 GROUP BY usando um índice SELECT R.A, Sum(R. B) FROM R GROUP BY R.A Suponha que tenhamos um índice com chave (A,B) Logo: o arquivo de índice contém todas as informações necessárias para se fazer a consulta. Portanto: calcula-se a consulta, usando-se as técnicas de ordenação ou Hash (dependendo do tipo do índice) Select I.A, Sum(I.B) FROM I GROUP BY I.A Onde I = arquivo de índice CUSTO = N onde N = número de páginas do indice I

13 GROUP BY usando um índice agrupado denso B-TREE SELECT R.A, Sum(R. B) FROM R GROUP BY R.A Suponha que tenhamos um índice do tipo B-TREE (ou ISAM) com chave A, Usa-se o indice para procurar as páginas de dados referentes a cada valor do atributo de agrupamento A Para cada valor do atributo de agrupamento, carrega-se estas páginas de dados na memória (possivelmente vão caber todas na memória) Varre-se tais páginas na memória e executa-se a operação de agregação. Evita-se assim a fase de ordenação da operação de agrupamento


Carregar ppt "Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY AULA 23 Profa. Sandra de Amo GBC053 – BCC 2013-1."

Apresentações semelhantes


Anúncios Google