Buscar

Otimização de Consultas em SQL

Prévia do material em texto

Otimização de Consultas em SQL 
Exemplos de Estimativas de Custos de 
Planos de Consulta
Adaptação de Slides das aulas da Profa. 
Sandra de Amo da UFU
 R(sid,bid,day,rname) : RESERVA 
S(sid,sname,rating,age) : SAILORS 
B(bid,bname, color) : BOAT
  Consulta: Dê todos os nomes de marinheiros 
com rating > 5 que reservaram o barco com 
bid = 100.
 Dados a considerar para o cálculo de custos dos planos: Nº de 
páginas de R = M = 1000, com 100 tuplas por página Nº de páginas de 
S = N = 500, com 80 tuplas por página
 Nº de barcos reservados = 100 (existem 100 valores de bids distintos 
na tabela R) Nº de valores para o atributo rating em S: 10 (varia de 1 a 
10)
 Hipóteses consideradas para a estimativa dos custos :
 As reservas estão uniformemente distribuídas entre os barcos.
 O número de marinheiros para cada valor de rating é 
aproximadamente o mesmo (distribuição uniforme dos valores de 
rating entre os marinheiros)
 Nº de páginas livres no buffer = 5
Cálculo de Custos de Planos de 
Execução 
Exercício1 : 
Calcule o custo deste plano
R : 1000 páginas
S : 500 páginas
R: 100 tuplas por página
S: 80 tuplas por página
σ
Reservas Sailors
Π
sname
bid=100 and rating > 5
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
On-the-fly - Pipeline 
On-the-fly - Pipeline
Tabela externa Tabela interna
Cálculo de Custos de Planos de 
Execução 
Exercício1 : 
Calcule o custo deste plano
R : 1000 páginas = M
S : 500 páginas = N
R: 100 tuplas por página
S: 80 tuplas por página
σ
Reservas Sailors
Π
sname
bid=100 and rating > 5
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
On-the-fly - Pipeline 
On-the-fly - Pipeline
Tabela externa Tabela interna
Custo = M + M.N = 1000 + 
1000*500 = 501.000 I/Os
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 2: 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Sorte-Merge Join
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 2: 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Sorte-Merge Join
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
Tamanho 
de Temp 1 
= 1000/100 
= 10 
Tamanho de 
Temp 2 = 
500/2 = 250
Custo de ordenação de 
Temp1 = 10 * (2*nº de 
etapas + 1)
Nº de etapas = [log4 10/5] 
= [log4 2] = [0,5] = 1 
Custo de ordenação de 
Temp 1 = 30
Custo de ordenação 
de Temp2 = 250*(2*nº 
de etapas + 1)
Nº de etapas = [log4 
250/5] = [log4 50] = 
[2,5] = 3 
Custo de ordenação 
de Temp2 = 1750
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 2: 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Sorte-Merge Join
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
Custo do Sort-Merge = 
10 + 250 = 260
Custo total do plano = 
Custo de leitura das 
tabelas originais e 
gravação das 
materializadas + Custo da 
ordenação das duas 
tabelas + Custo do Sort-
Merge
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 2: 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Sorte-Merge Join
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
Custo do Sort-Merge = 
10 + 250 = 260
Custo total do plano = 
(1000+10+500+250) + (30 
+ 1750 + 260) = 1760 + 
2040 =3800 I/O
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 3 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer (B)= 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 3 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer (B)= 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
B-2 = 3
Nº de blocos de 3 páginas = 
[10/3] = 4
Custo da operação de 
junção de Temp1 com 
Temp2 = 4*250 + 10 = 1010
Custo total do plano = Custo 
de leitura das tabelas 
originais e gravação das 
materializadas + Custo da 
junção
“Empurrando” seleções para baixo na 
árvore de execução
Exercicio 3 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuidos
Numero de páginas no buffer (B)= 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ Scan, write to Temp2Scan, write to Temp1
B-2 = 3
Nº de blocos de 3 páginas = 
[10/3] = 4
Custo da operação de 
junção de Temp1 com 
Temp2 = 4*250 + 10 = 1010
Custo total do plano de 
execução = (1000 + 10 + 500 
+ 250) + 1010 = 2770 I/O
“Empurrando” projeções para baixo na 
árvore de execução
Exercicio 4 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuídos
Número de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ
Scan, write to Temp2Scan, write to Temp1
Πsid
Πsid,sname On-the-fly On-the-fly 
“Empurrando” projeções para baixo na 
árvore de execução
Exercicio 4 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuídos
Número de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ
Scan, write to Temp2Scan, write to Temp1
Πsid
Πsid,sname On-the-fly On-the-fly 
Reserva tem 4 
atributos. Sailors tem 
4 atributos. Tamanho 
de Temp1 após a 
projeção = [10/4] = 3 
páginas
Tamanho de 
Temp2 após a 
projeção = [250/2] 
= 125 páginas
“Empurrando” projeções para baixo na 
árvore de execução
Exercicio 4 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuídos
Número de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating > 5
σ
Scan, write to Temp2Scan, write to Temp1
Πsid
Πsid,sname On-the-fly On-the-fly 
Reserva tem 4 
atributos. Sailors tem 
4 atributos. Tamanho 
de Temp1 após a 
projeção = [10/4] = 3 
páginas
Tamanho de 
Temp2 após a 
projeção = [250/2] 
= 125 páginas
Nº de blocos de 3 páginas para 
Temp1 = 1
Custo do Laços aninhado = 3 
+ 1* 125 = 128
“Empurrando” projeções para baixo na 
árvore de execução
Exercicio 4 : 
Calcule o custo deste plano
Número de valores para bid = 100
Rating varia de 1 a 10
Uniformemente distribuídos
Número de páginas no buffer = 5
σ
Reservas Sailors
Π
sname
bid=100
sid=sid 
(scan) (scan)
Junção de laços aninhados por blocos
melhorado
On-the-fly 
Tabela externa Tabela interna
rating> 5
σ
Scan, write to Temp2Scan, write to Temp1
Πsid
Πsid,sname On-the-fly On-the-fly 
Custo de criação e 
armazenamento das 
relações temporárias 
projetadas = 1000 + 3 + 
500 + 125 = 1628
Custo total do plano de 
execução = 1628 + 128 = 1756 
I/Os

Continue navegando