otimização de consultas em sql estimativas de custos
DESCRIPTION
Otimização de Consultas em SQL Estimativas de Custos. AULA 25 Profa. Sandra de Amo GBC053 – BCC 2013-1. Catálogo do Sistema. Informações armazenadas no catálogo, necessárias no processo de otimização: Informações gerais: Tamanho do buffer pool (espaço livre) - PowerPoint PPT PresentationTRANSCRIPT
Otimização de Consultas em SQL Estimativas de Custos
AULA 25
Profa. Sandra de Amo
GBC053 – BCC
2013-1
Catálogo do SistemaInformações armazenadas no catálogo, necessárias no processo de otimização: Informações gerais:
Tamanho do buffer pool (espaço livre) Tamanho de uma página em disco
Informações sobre as tabelas Informações sobre índices Informações sobre visões Estatísticas sobre tabelas e indices: atualizadas periodicamente Informações sobre usuários: contas, autorizações de acesso (escrita,
leitura), etc. Alguns SGBDs mais sofisticados:
Histogramas sobre a distribuição dos valores de cada atributo. A partir destas informações é possivel ter informação mais acurada sobre o
tamanho dos resultados de uma operação, sobre a seletividade de um método de acesso, etc.
Informações sobre tabelas, índices e visões Tabelas
Nome da tabela, nome ou identificador do arquivo, estrutura de arquivo (heap, ordenado, hash)
Nome e tipo de cada atributo Nome dos índices existentes para cada tabela As restrições de integridade (chaves primárias, chaves candidatas,
chaves estrangeiras, etc) para cada tabela Indices
O nome do índice e sua estrutura (hash, b+tree) A chave do índice
Visões Nome da visão e sua definição (o código da consulta SQL que a
define)
Como o catálogo é armazenado : Coleção de Tabelas
Exemplo Sailors(sid:integer, sname:string, rating:integer, age:real) Reservas(sid:integer, bid:integer, day:dates, rname:string)
Tabela do catálogo: Attribute_Cat(atname:string, relname:string, type:string,
position:integer) Catálogo pode ser consultado usando SQL ! Escolha das tabelas do catálogo e seus esquemas
depende do implementador do SGBD.
Uma tabela do catálogoatname relname type position
atname Attribute_Cat string 1
relname Attribute_Cat string 2
type Attribute_Cat string 3
position Attribute_Cat integer 4
sid Sailors integer 1
sname Sailors string 2
rating Sailors integer 3
age Sailors real 4
sid Reservas integer 1
bid Reservas integer 2
day Reservas dates 3
rname Reservas string 4
Estatísticas sobre tabelas e indices armazenadas no catálogo: NTuples (R) = Número de tuplas da tabela R NPages(R) = Número de páginas da tabela R NKeys(I) = número de chaves distintas do Indice I INPages(I) = número de páginas do indice I
(no caso de B+tree = número de folhas) IHeight(I) = Altura do Indice (no caso de B+tree) ILow(I) = menor valor de chave do indice I IHigh(I) = maior valor de chave do indice I
Plano de Execução
SELECT S.sname
FROM Reservas R, Sailors S
WHERE R.sid = S.sid
AND R.bid = 100
AND S.rating > 5
σ
Reservas Sailors
Πsname
bid=100 and rating > 5
sid=sid
Complementando o plano: como será implementado ?
σ
Reservas Sailors
Πsname
bid=100 and rating > 5
sid=sid
(scan) (scan)
Simple Nested Loops página a página
Projeção simples
Tabela externa Tabela interna
Scan
Complementando o plano: como será implementado ?
σ
Reservas Sailors
Πsname
bid=100 and rating > 5
sid=sid
(scan) (scan)
Simple Nested Loops página a página
On-the-fly
On-the-fly
Tabela externa Tabela interna
Pipeline versus Tabelas Materializadas Pipeline : resultado de uma operação é
transferido para a próxima operação sem a criação de uma tabela em disco.
Economia de custos de armazenamento e de leitura posterior
Sempre que o algoritmo do operador para o qual é transferido o resultado permitir, a técnica de pipeline é utilizada.
Estimativa de Custos de um Plano de Execução
Para cada nó da árvore N da árvore, seja Op(N) a operação associada a N.
Tarefas do Estimador de Custos Estimar do custo de Op(N) Estimar o tamanho do resultado de Op(N)
Estimativa do Tamanho do ResultadoSELECT <lista de atributos> FROM < lista de relações R1,...,Rk > WHERE <cond1 ^ cond2 ^....^condn>
Número máximo de tuplas no resultado = M1.M2....Mk, onde Mi = tamanho de Ri Cláusula WHERE atua como um redutor desta
estimativa Cada condição do WHERE tem o seu fator de
redução próprio
Fatores de Redução R.A = valor
Fator de redução = 1/NKeys(I), caso exista um indice I com chave A para a relação R
Fator de redução = 1/10, caso contrário (ou utiliza-se estatísticas mantidas no catálogo sobre a distribuição dos valores dos atributos)
R.A = R.B Fator de redução = 1/Max(NKeys(IA),NKeys(IB)) se
existe indices IA e IB com chave A e B respectivamente. Fator de redução = 1/NKeys(I) se somente um dos
atributos é chave de um indice I Fator de redução = 1/10 caso contrário.
Fatores de Redução R.A > valor
Fator de redução = (High(I) – valor) / High(I) – Low(I) caso exista um indice I com chave A para a relação R
Fator de redução = fração < ½ caso não exista indice ou se o valor não é aritmético
R.A IN (Lista de valores) Fator de redução =
N*(fator de redução de R.A = valor), onde N = núm. de itens
Fator de redução = fração < ½ caso não exista índice ou se o valor não é aritmético.
Fatores de Redução R.A IN (Subconsulta)
Fator de redução: M/N onde M = tamanho do resultado da Subconsulta N = número de valores do atributo R.A
NOT (Cond) Fator de redução: (1 – Fator de Redução(Cond))
Fator de Redução da Projeção = fração equivalente ao tamanho dos atributos que não são eliminados.
Exercícios É 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 à esquerda ?
A B
C
SIM
Exercícios É 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 ?
A
B C
NÃO