algoritmos para operações de agregação e para o operador de agrupamento group by

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

Upload: hoyt-solomon

Post on 02-Jan-2016

26 views

Category:

Documents


0 download

DESCRIPTION

Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY. AULA 20 Profa. Sandra de Amo GBC053 – BCC. Operações de Agregação. Select AVG (S.Idade) From Sailors S Algoritmo Básico : Scan da relação Sailors - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

AULA 20Profa. Sandra de Amo

GBC053 – BCC

Page 2: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Operações de AgregaçãoSelect 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

115

79

11

SID Idade

253219

1820

21

Agreg

25

Avg(n) = (Avg(n-1)*(n-1) + t_n)/n

Avg(n) = (t_1+t_2+...+t_n)/n

Page 3: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Operações de ConjuntosSelect 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

115

79

11

SID Idade

253219

1820

21

Agreg

28,5

Page 4: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Operações de ConjuntosSelect 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

115

79

11

SID Idade

253219

1820

21

Agreg

25,33

Page 5: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

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

Operações de agregação são operações incrementais : Op(a1,...,an) = F(Op(a1,...,an-1) an, n)

Avg(a1,...,an) = F(Op(a1,...,an-1) an, n)

onde F(x,y,n) = (x*(n-1) + y)/n

Exercicio 1: Mostre que SUM, COUNT, MIN e MAXsão operações incrementais

Page 6: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Operador de Agrupamento: GROUP BY

SELECT S.Status, AVG(S.Idade)

FROM Sailors S

GROUP BY S.Status

Técnicas: Ordenação Hashing

Page 7: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Algoritmo para GROUP BY baseado em ordenaçãoEtapa 1: Fase da ordenação Ordena-se a relação pelo atributo do Group by

Etapa 2: Fase do agrupamentoFaz-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 = MCusto total = 2M([LogB-1 M/B] + 1) + M

Exercicio 2: Projetar um algoritmo otimizado (baseado em ordenação) para o GROUP BY e calcular seu custo

Page 8: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

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

Page 9: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

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 Disco

Relação R Particionada

Pt 1 Pt 2 Pt 3 Pt 6Pt 5Pt 4

Distribui usando hash h sobre os atributos de agrupamento (presentessa cláusula GROUP BY)

M páginas M páginas

Page 10: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

Fase do Agrupamento

Buffer tem capacidade para B páginas,onde B – 1 é suficiente para conter uma partiçãointeira de R.

Resultado

Relação R particionada

Disco Disco

Relação R’ Particionada

M páginas T páginas

Partição n

Ordena pelos atributosdo Group By Varre, calcula a operaçãode agregação sobre cada grupo einsere tupla (Val-Grupo,Val-Agreg)no resultado

Page 11: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

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:

1. 40 partições de 1000/40 = 25 páginas cada

2. Custo = 1000 + 1000 = 2000

3. 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, ..., 40

1. Carrega-se partição i de 25 páginas

2. Ordena-se internamente

3. Calcula-se o output (o output tem número de páginas <= 25)

4. Custo = 1000

3. Custo total = 2000 + 1000 = 3000

Page 12: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

GROUP BY usando um índiceSELECT R.A, Sum(R. B)

FROM R

GROUP BY R.A

Suponha que tenhamos um índice denso 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

Page 13: Algoritmos para Operações de Agregação e para o operador de Agrupamento GROUP BY

GROUP BY usando um índice agrupado denso B-TREESELECT 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