Otimização de Consultas em SQL Comparação: Joins em pipeline versus Joins materializados AULA 26 – Parte I Profa. Sandra de Amo GBC053 – BCC
Exercício 1 Sejam R(A,B), S(B,C) e T(C,D). M = 1000 = tamanho de R, N = 500 = tamanho de S, P = 800 = tamanho de T. Os dois Joins utilizam o algoritmo NLJ-pag a pag. O 1o Join é executado em pipeline. Descrever com detalhes a execução do 1o Join. R S T
R (ext) S (int)T (int) R x S A cada vez que a página do frame 3 se completa, a tabela T é carregada página a página no frame 4. A junção da página do frame 3 com todas as páginas de T é efetuada e armazenada no Frame 5 Output (R x S) x T Frame 1 Frame 2Frame 3Frame 4 Frame 5
R (ext) S (int)T (int) R x S Output (R x S) x T Frame 1 Frame 2Frame 3Frame 4 Frame 5 Tabela R é carregada 1 única vez Tabela S é carregada M vezes, onde M = num. de páginas de R Tabela T é carregada K vezes, onde K = num. de páginas de R x S
R (ext) S (int)T (int) R x S Output (R x S) x T Frame 1 Frame 2Frame 3Frame 4 Frame 5 Custo do plano executado em pipeline, sabendo que M = 1000, N = 500, P = 800 = ((1000*500)/10).800 = = Tempo = seg = 112,5 horas
Exercício 2 Não é possível utilizar a estratégia de pipeline para implementar um duplo join utilizando o algoritmo NLJ/p-p para os dois Joins com o plano linear à direita abaixo. Descrever com detalhes a execução do 1o Join e o custo deste plano. R ST
S (ext) T (int) S x T A cada vez que a página do frame 3 se completa o conteúdo do frame 3 é gravado em disco (materializado). Frame 1 Frame 2Frame 3
R (ext) S x T (int) R x (S x T) Frame 1 Frame 2Frame 3 Quando a relação S x T for TOTALMENTE gravada em disco, a relação R começa a ser carregada no Frame 1, Página a página e no Frame 2 a relação S x T é carregada M vezes ! Resultado da junção de R com (S x T) é calculado no Frame 3.
Custo de criar S x T = *800 = Tamanho de S x T = (500*800/10) = Custo de gravar S x T = Subtotal = S (ext) T (int) S x T Frame 1 Frame 2Frame 3
R (ext) S x T (int) R x (S x T) Frame 1 Frame 2Frame 3 Custo de criar R x (S x T) = * = Custo total do plano = = Tempo = seg Plano anterior em pipeline = seg Diferença de 195 seg = 3,25 min
Exercicio 3 Calcular o custo do seguinte plano de execução: T RS
Exercicio 4 Considere o plano left deep, onde o algoritmo utilizado para o Join é o Sort- Merge Join (não otimizado). Este plano não pode ser executado em pipeline ! (Por que ???) Calcule seu custo, com um buffer de 5 páginas. R S T Ordenação de R: Ordenação de S : 4000 Ordenação de T : 6400 Criação de R x S = = 1500 Tamanho de R x S = Gravação de R x S = Ordenação de R x S = Custo de (R x S) x T = = Custo total = = Tempo = 9227 seg = 2,56 horas