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

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

AULA 23 Profa. Sandra de Amo GBC053 – BCC

Apresentações semelhantes


Apresentação em tema: "AULA 23 Profa. Sandra de Amo GBC053 – BCC"— Transcrição da apresentação:

1 AULA 23 Profa. Sandra de Amo GBC053 – BCC 2013-1
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

2 Operações de Agregação
SID Idade Agreg 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 1 25 25 1 32 5 19 7 18 9 20 11 21 2

3 Operações de Conjuntos
SID Idade Agreg 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 1 25 28,5 1 32 5 19 7 18 9 20 11 21 3

4 Operações de Conjuntos
SID Idade Agreg 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 1 25 23,33 1 32 5 19 7 18 9 20 11 21 4

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([LogB-1 M/B] + 1) Etapa 2 = M Custo total = 2M([LogB-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
Relação R Particionada Relação R Pt 1 Pt 2 Pt 3 Pt 4 Pt 5 Pt 6 Distribui usando hash h sobre os atributos de agrupamento (presentes sa cláusula GROUP BY) Página de R Buffer tem capacidade para B páginas, onde B – 1 = número de partições Disco Disco M páginas M páginas

10 Fase do Agrupamento Relação R’ Particionada Relação R particionada
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 Resultado Buffer tem capacidade para B páginas, onde B – 1 é suficiente para conter uma partição inteira de R. Disco Disco T páginas M páginas

11 Seja R(A,B,C) M = 1000 páginas, B = 41
Exemplo: Seja R(A,B,C) M = 1000 páginas, B = 41 Consulta: SELECT R.A, Sum(B) FROM R GROUP BY R.A Fase do Particionamento: 40 partições de 1000/40 = 25 páginas cada Custo = = 2000 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. Registros com mesmo valor de A estão em uma mesma partição Fase do Agrupamento Para i = 1, ..., 40 Carrega-se partição i de 25 páginas Ordena-se internamente Calcula-se o resultado Grava as 25 páginas da partição i Custo = 1000 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 "AULA 23 Profa. Sandra de Amo GBC053 – BCC"

Apresentações semelhantes


Anúncios Google