DaC-Join: Um algoritmo de junção
para memórias assimétricas
Aluno: Namom Alves Alencar
Orientador: José Maria Monteiro
Co-Orientador: Angelo Brayner
Introdução
Performance
Processadores
Número de operações por segundo Crescido exponencialmente
HD
Número de operações de leitura/escrita Crescido marginalmente
Surgimento dos SSDs
04/10/2016Namom Alves Alencar2
Problema
Será que os bancos de dados existentes são adequados as características dos SSDs?
Os algoritmos de junção consideram o custo de uma leitura igual ao de uma escrita Porém, em SSDs, a escrita é mais cara que a leitura.
Também devemos levar em consideração os novos modelos de computadores com múltiplos processadores.
04/10/2016Namom Alves Alencar3
Objetivo
Construir um algoritmo de junção para esse novo cenário.
Levar em consideração características de SSDsvelocidade de escrita é mais lenta que a velocidade de
leitura
paralelismo de chips dentro do SSD
velocidade leitura randômica constante
Tirar proveito dos diversos chips/cores disponibilizados nos computadores de hoje.
04/10/2016Namom Alves Alencar4
HD: Hard Disk
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner5
Motores• Rotação do disco• Mover braço
Disco• Superfície
Magnetizada
Trilhas• Concêntricas• Onde os dados são
armazenados
Setor• Unidade de acesso
Gap• Área não magnetizada
SSD: Solid State Drive
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner6
Ausência de partes mecânicas
Controladora Flash
Flash Translation Layer (FTL)• Wear Leveling
o Dinâmicoo Estático
• Coletor de lixo• Mapeamento
Gerenciador de buffer
Algoritmos de junção tradicionais
Nested Loop-Join
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner7
R
S
Tabela R• PR pages• nr tuples Tabela S
• PS pages
Custo de execução• EC= PR + (nr*PS)
For each tuple tr ∈ R doFor each tuple ts ∈ S do
If tr.a = ts.bResult = Result ∪ {(tr,ts)}
End-ForEnd-For
Nested-loop Join (R⋈R.a=S.bS)
Algoritmos de junção tradicionais
Block Nested Loop-Join
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner8
R
S
Custo de execução• EC= PR + (Pr*PS)
For each Page Pr of R doFor each Page PS of S do
For each tuple ts ∈ S doIf tr.a = ts.b
Result = Result ∪ {(tr,ts)}End-For
End-For
End-For
Block Nested-loop Join (R⋈R.a=S.bS)
Algoritmos de junção tradicionais
Merge-Join
04/10/2016Namom Alves Alencar9
Tabelas ordenadasCusto de execução
• EC= PR + PS
Tabelas NÃO ordenadas 1 - Ordenação das tabelas
• COR = 2pr(𝐥𝐨𝐠𝑩−𝟏 Τ(𝒑𝒓 𝑩)+1) • COS = 2ps(𝐥𝐨𝐠𝑩−𝟏 Τ(𝒑𝒔 𝑩)+1)
• B = Número de páginas no buffer 2 - Realizar o Join
• CJ = PR + PS
• Custo de execução• EC= PR + PS + COR +COS
Algoritmos de junção tradicionais
Hash-Join
• Hash Join (R⋈S)
– 1st Fase
• Particionar as tabelas R e S com uma função hash
10
For each tuple tr∈R doi=f(tr[JoinAttrib])
PRi=PRi∪ {tr}
For each tuple ts∈S doi=f(ts[JoinAttrib])
PSi=PSi∪ {ts}
⋯PR1 PR2 PR3 PR4 PRn
⋯PS1 PS2 PS3 PS4 PSn
Custo de execução: EC=2(PR+PS)
Namom Alves Alencar – Imagem: Ângelo Brayner 04/10/2016
Algoritmos de junção tradicionais
Hash-Join
• Hash Join (R⋈S)– 2nd Phase
• Utilizando um índice, executar o nested-loop join entre as partições correspondentes.
11
PRk
B1
B2
B3
PSk
ECF2=PR+PS
Custo de execução: ECtotal=3(PR+PS)
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner
Algoritmos de junção tradicionais
Hybrid Hash-Join
• Hybrid Hash Join (R⋈S) [DeWitt et al. 1984]
12
R.A1
R.A2
R.A3
R.B1 R.B2
R.C1
R.C2
R.C3
R
R.A1
S.B1 S.A5S.B2
S.C3
S.D2S.D1
S.A2
S.A3
S
R.B1
R.A2
R.A3
R.C1R.B2
R.C2
R.C1
R.C3
S.D2S.A5 S.B1
S.A2
S.A3
S.C3S.B2
S.D1
R.C3 S.C3
S.C3
Disk
Main Memory(DBS Buffer)
Disk
✘ ✘
R.A2
R.A3
S.A2
S.A3R.B1R.B2
S.B1S.B2
Result
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner
Algoritmos adaptados para SSD
FlashJoin
• Flash Join (R⋈S⋈T)
13
Select R.B, R.C, S.F, T.H from R,S,Twhere R.A=S.D and S.E=T.L
(S.E)
Join Index
(R.B,R.C,S.F.T.H)
(S.F)
(T.H)
(R.B,R.C)
S(D,E,F,G)R(A,B,C)
Fetch Kernel
Join Kernel
(R.A,S.D,PR,PS)
FlashJoin
Fetch Kernel
Join Kernel
T(H,L,M)
(S.E,R.A,S.D,PR,PS)
(R.A,S.D,S.G,T.L,PR,PS,PT)
FlashJoin
Late Materialization
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner
Materialização Mista e Tardia
04/10/2016Namom Alves Alencar14
• FlashJoin• Late Materialization
• Sempre causa releituras
• Hybrid Hash Join• Early Materialization
• Não causa releituras
• DaC-Join• Mix Materialization
• Releitura apenas para projeção
DaC-Join – Multi Scan Phase
04/10/2016Namom Alves Alencar16
• Multi Scan Phase
• Iniciamos k processos(threads)
• Cada processo é responsável por ler uma bloco da tabela
• A segunda leitura do processo p será no bloco p+k• Exemplo: Iniciamos 4 threads
• Thread 1 vai ler os blocos: 1, 5, 9…• Thread 2 vai ler os blocos: 2, 6, 10…• Thread 3 vai ler os blocos: 3, 7, 11…• Thread 4 vai ler os blocos: 4, 8, 12…
DaC-Join – Join Phase
04/10/2016Namom Alves Alencar17
• Join Phase
• Utilizada para separar as tuplas em sua respectivasuper-partição(super-hash-table).
• Utilizada para separar as tuplas em sua respectivasub-partição(sub-hash-table).
DaC-Join – Join Phase
04/10/2016Namom Alves Alencar18
• Join Phase
• Temos k processos(threads)
• Temos k super-partições(super-hash-table)
• Então, cada processo(thread) fica responsável porfazer a junção das tuplas de uma super-partição.
Experimentos Junções
19
QA: 1.147.084Select * from orders, lineitemwhere o_orderdate >= 1993-10-01 and o_orderdate < 1994-01-01 and l_returnflag = ’R’ and l_orderkey = o_orderkey
Q5n: 1.147.084Select * from customer, orders, lineitem, supplier, nation, region where l_orderkey = o_orderkey and c_custkey = o_custkeyand l_suppkey = s_suppkey and c_nationkey = n_nationkeyand n_regionkey = r_regionkey and r_name = ’ASIA’ and o_orderdate >= 1994-01-01 and o_orderdate < 1995-01-01
04/10/2016Namom Alves Alencar
Experimentos – QA
20
QA: TempoDaC-2(100MB) é 60.53% mais rápido do que FlashJoinDaC-8(100MB) é 81.86% mais rápido do que FlashJoin
04/10/2016Namom Alves Alencar
Experimentos –QA
21
QA: EscritasDaC-2(100MB) tem 47.82% menos escritas do que FlashJoin DaC-8(200MB) tem 97.91 % menos escritas do que FlashJoin
04/10/2016Namom Alves Alencar
Experimentos – QA
22
QA: ReleiturasO número de releituras do FlashJoin é inferior ao DaC-Join, pois as tuplas foram ordenadas antes de releitura. Decidimos não realizar estaordenação, pois a mesma consome um número considerável de escritas.
04/10/2016Namom Alves Alencar
Experimentos – Q5n
23
Q5: TempoDaC-2(50MB) é 69.07 % mais rápido do que FlashJoinDaC-8(50MB) é 82.95 % mais rápido do que FlashJoin
04/10/2016Namom Alves Alencar
Experimentos – Q5n
04/10/2016Namom Alves Alencar24
Q5: EscritasDaC-8(50MB) tem 58.14 % menos escritas do que FlashJoin
Experimentos – Q5n
04/10/2016Namom Alves Alencar25
Q5: ReleiturasDaC-Join realiza menos releituras do que o Flash Join, por causa do usoda estratégia de materialização Mista.
Conclusão
04/10/2016Namom Alves Alencar26
• Ter o conhecimento das caracteristicas da mídia, pode nos fornecer diversos meios para melhorar os algoritmos dos SGBDs.
• Uma vez que conseguimos reduzir o número de escritas, também reduzimos o tempo execução.
• Tomamos vantagem também tempo de acesso randômico constante. Operações de releitura.
• A estratégia de Dividir para Conquistar torna o processo muito mais rapido uma vez que utilizamos multiplos processadores.
Super partição – Sincronized-Join
28
⋯PR1 PR2 PR3 PR4 PRn
⋯PS1 PS2 PS3 PS4 PSn
⋯PR1 PR2 PR3 PR4 PRn
⋯PS1 PS2 PS3 PS4 PSn
Super partições do SincronJoin Cada super partição possui várias pequenas partições,
assemelhando-se ao hybrid Hash-Join
Program Operation- Physical Write -
29
PA PC
PD PE PF
S1: Block B with clean pages (all bits set to 1)
PA
PF
S2: New data should be inserted into pages PA and PF
★ Program operation
PB
Block B
PAPA
Logical Write
30
PB PC
PD PE PF
PA' PB' PC'
PD' PE' PF’
Block B'
Block B
PC'
PF'PE'
PF
S3: New data should be inserted into pages PE of B★ Program operation can not be execute any more★ Pages of B are rewritten in a new clean block B’★ Pages PA and PF become stale pages
Write Amplification
• Tanto o coletor de lixo, quanto o wear leveling causam escritas extras nos SSDs.
• Tornando o número real de escritas superior ao número de escritas requisitadas pelos aplicativos.
• Esta característica é chamada de write amplification.
31
Exemplo Processamento de consultas
32
Plano Lógico• Boa heurística
• A seleção deve ser processada primeiro
Plano Físico
Processamento de consultas
04/10/2016Namom Alves Alencar – Imagem: Ângelo Brayner33
Análise Sintática Semântica
Tradução Plano lógico de consulta
Geração PEC PLC ->Plano(s) de execução
Execução PEC Escolhida com base no custo de
execução
Características dos SSDs
• O tempo de procura de um dado é muito baixo, pelo fato de não possuir componentes mecânicos;
• O tempo de acesso a dados aleatórios é praticamente constante. Normalmente este tempo é 0,1 milissegundo ou menos;
• Nos SSDs temos altas taxas de transferência de dados. Abaixo mostraremos a leitura e a escrita sequencial, medidas em mb/s. Logo após mostraremos a leitura e a escrita randômica, medidas em IOPS;– A taxa de transferência da leitura sequencial pode chegar até 540 mb/s.– A taxa de transferência escrita sequencial pode chegar até 330 mb/s.– A leitura randômica realiza até 98.000 IOPS.– A escrita randômica realiza até 60.000 IOPS.
• Os SSDs apresentam um baixo consumo de energia, onde a média de consumo de energia por operação é de 0,127W;
• O SSD não perde desempenho, mesmo quando cheio;• Os SSDs são altamente confiáveis, uma vez que a média de falha é de 1
em cada 1,5 milhões de horas de uso.
34