mata60 banco de dadosformas.ufba.br/dclaro/mata60/aula 11 - otimizacao.pdf · 2018-03-14 · sql,...
TRANSCRIPT
MATA60 – BANCO DE DADOSAula: Otimização
Prof. Daniela Barreiro Claro
2
Introdução a Otimização
SQL, SQL3 e OQL são linguagens
declarativas
O SGBD deve processar e otimizar estas
consultas antes delas serem efetivamente
executadas
Uma consulta possui muitas estratégias de
execução possíveis
O processo de escolha destas estratégias é
chamado de OTIMIZAÇÃO.
3
Introdução a Otimização
Passos principais
Tradução da consulta SQL para a álgebra
relacional
Otimização do resultado
Estratégias de otimização
Otimização baseada em heurísticas
Otimização baseada na estimativa de custo da
consulta
4
Otimização – Etapas do Processamento
Analisador Léxico,
Sintatico e Validação
Mecanismo
de Execução
Select cpf from candidato
where cpf=“859”;
Otimizador
cpf( cpf=“859”(Candidato))cpf=“859(”cpf(Candidato)
)
Estatisticas
cpf
cpf=“859”; usar indice
1
candidato
candidato;indice1 – cpf
disciplina;indice2-codigo
DadosDaniela Claro, 859,
Salvador
Pedro Antonio, 123, Rio de
J
859
Saida da
Consulta
5
Otimização
O sistema tenta encontrar uma expressão que seja equivalente à expressão dada, porém cuja execução seja mais eficiente.
Para isso a consulta é separada em blocos
Estes blocos podem ser traduzidos em operadores algébricos e assim otimizados
Considere a consulta:
Q
6
Exemplo de Tradução de uma consulta
SQL
Q
7
Otimização
Consultas são representadas internamente na forma de uma árvore ou grafo
Árvores de consulta são preferidas para a otimização pois determinam a
ordem de execução das operações
Grafos de consulta indicam apenas as operações e os respectivos
operandos envolvidos portanto, existe apenas um grafo correspondente a
cada consulta
Regras heurísticas são usadas para alterar a representação interna (árvore ou
grafo) de uma consulta de modo a otimizar a sua execução
Por exemplo: operações de projeção e seleção são aplicadas antes de uma
junção
O plano de execução gerado determina a ordem em que as operações
serão executadas e os recursos a serem utilizados (por ex., índices)
8
Exemplo
Consulta
Para cada projeto localizado em ‘Stafford’, recupere o número do projeto, o número do
departamento responsável e o último nome, o endereço e a data de nascimento do gerente
do departamento.
Consulta em SQL
SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT
AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.DNUM=D.DNUMBER AND
D.MGRSSN=E.SSN AND P.PLOCATION=‘STAFFORD’;
Álgebra Relacional
9
Arvore Canônica
10
Arvore de consulta
11
Arvore de consulta
12
Arvore de consulta
13
Arvore de consulta
14
Otimização
Há duas técnicas principais para a
implementação da otimização das consultas
Baseada em regras heurísticas
Estimativa do custo
Geralmente, estas técnicas são combinadas
em um otimizador de consulta.
15
Regras Heurísticas
Regras heurísticas são utilizadas para transformar um
árvore de consulta em uma árvore equivalente
Normalmente a nova árvore é mais eficiente.
Há várias regras de equivalência para transformar
estas consultas, dentre elas:
1. Operações de Seleção Conjuntiva podem ser
decompostas
c1 and c2 and c3 (R) c1 (c2 (c3(R)))
2. Comutatividade das Operações de Seleção
c1 (c2 (R)) c2 (c1 (R))
16
Regras Heurísticas
3. Comutatividade de Join e Natural Join
R S S R e R S S R
4. Comutatividade da Seleção e Join:
Se todos os atributos da condição c forem atributos de apenas uma
relação R
c (R S) (c (R)) S
São regras de equivalência que podem ser utilizadas
para criar planos equivalentes
17
Regras Heurísticas
Uma das principais técnicas heurísticas é
Operações SELECT e PROJECT antes de aplicar o JOIN
As operações SELECT e PROJECT reduzem o tamanho de um arquivo
Suponha a seguinte consulta:
nome_cliente(cidadeAgencia=“Brooklyn”(agencia conta depositante)
Sabendo que só existem 4 agências no Brooklyn
nome_cliente(cidadeAgencia=“Brooklyn”(agencia)) (conta depositante)
Q
18
Regras Heuristicas
19
Regras Heuristicas
20
Regras Heuristicas
21
Análise
22
Exercício
Dado a SQL abaixo, faça a Algebra Relacional correspondente:
SELECT e.ultimo_nome
FROM empregrado e, trabalha t, projeto p
WHERE nome_projeto = ‘arquivo X’
AND p.nro_projeto = t.nro_projeto
AND e.nro_empregado = t.nro_empregado
Algebra Relacional
ultimo_nome(nome_projeto=“arquivo” and nro_projeto=nro_projeto and
nro_empregado=nro_empregado (empregado trabalha projeto)
23
Exercício
• Arvore Canônica – arvore 1
24
Exercício
• Conversão da Arvore de Consulta
25
Exercício
• Conversão da Arvore de Consulta
26
Exercício
• Conversão da Arvore de Consulta
27
Exercício
• Conversão da Arvore de Consulta
28
Estimativa de custo
Um otimizador deve estimar e comparar os
custos da execução de uma consulta
As heurísticas são utilizadas para reduzir os
custos da otimização
Mesmo com o uso de heurísticas, a otimização
da consulta baseada em custo impõe uma
sobrecarga substancial ao processamento da
consulta
29
Estimativa de custo
Informações do catálogo
O tamanho de cada arquivo
Número de registros
Tamanho médio dos registros
Número de valores distintos e a seletividade
Otimização baseada em custo considera a
ORDEM DAS JUNÇÕES
30
Estruturas de Acesso
Os operadores algébricos, como SELECT
podem ser executados por diversos
algoritmos.
Estas escolhas dependem do uso ou não
de índices, da complexidade do operador,
etc
31
Algoritmos para operação SELECT
Métodos de Busca sem índice
Busca Linear
Varre todos os registros e testa para ver se
satisfazem a condição de seleção. Lento, mas se
aplica a qualquer arquivo
Busca binária
Se o arquivo for ordenado e a condição de seleção
for uma comparação de igualdade
32
Algoritmos para operação SELECT
Métodos de Busca com índice
Índice primário para igualdade Se houver uma comparação de igualdade sobre um atributo-
chave com índice primário, utiliza-se o índice para apanhar um único registro
cpf = “859”(candidato)
Índice primário para não igualdade Se a condição envolver >,<, usa o índice para encontrar o
registro de igualdade e depois recupera todos os registros seguintes do arquivo ordenado.
cpf > “859”(candidato)
33
Algoritmos para operação SELECT
Métodos de Busca com índice
Indice primário e igualdade para atributo não chave
Se a condição envolver um atributo não chave, use o índice
para recuperar os registros. Vários registros podem ser
encontrados. Indice é usado para posicionar os registros
coddisciplina = “mata60” (candidato)
Indice secundário com igualdade
Com a condição de igualdade, as seleções podem usar um
índice secundário
34
Algoritmos para operação SELECT
Métodos de Busca para Seleção complexa
Seleção conjuntiva utilizando índice individual
Verifica se o atributo satisfaz cada uma das condições simples
cpf = “859” AND cidade = “Salvador” (candidato)
Seleção conjuntiva utilizando índice composto
Se existir um índice composto este índice será usado
Uma condição disjuntiva OR é muito mais difícil de se processar
É a união dos registros que satisfazem as condições individuais.
35
Algoritmos para operação JOIN
É uma das que mais consome tempo no
processamento da consulta
Junção: R A=B S
Método de Junção de Laços Aninhados (nested loop)
Para cada registro r em R(laço externo) recupere cada
registro s de S(laço interno) e teste se os dois satisfazem a
condição de junção r[A]=s[B]
É mais eficiente usar a relação com menos tuplas como
externa
36
Algoritmos para operação JOIN
Método de Junção Sort-Merge (ordenação-fusão)
Se ambos os registros em R e S forem classificados (ordenados) fisicamente pelos valores de A e B, esta junção é muito mais eficiente.
Estes arquivos são unidos simultaneamente
Método de Junção Hash
Os registros são particionados utilizando a mesma função hash. Se as tuplas r e s satisfazem a condição de junção, elas terão o mesmo valor para os atributos de junção.
37
Algoritmos para operação JOIN
Para delimitar qual tabela participa do laço externo
Fator de Seleção da Junção
É a porcentagem de registros de um arquivo que sofrerá a junção com os registros do outro.
3000 disciplinas e 50 candidatos
1. DISCIPLINA X CANDIDATO
Recupera cada registro de Disciplina e usa o índice para recuperar os candidatos. Não haverá registro para disciplinas que não tenham candidatos
2. CANDIDATO X DISCIPLINA
Recupera cada registro de candidato e depois usa o
índice para encontrar a disciplina correspondente. FS=1– Assim, tanto o menor arquivo, quanto o maior fator de seleção devem ser
usados no laço externo.
E
38
Otimização nos Bancos de Dados comerciais
Oracle
Trabalha com as duas técnicas: regras heurísticas e estimativa de custos
Desenvolvedor pode dar dicas ao otimizador
Sugere atualizar as estatísticas, mudanças na estrutura, criação de índices
PostgreSQL
Otimizador a maior parte baseado em custos mas usa também heuristicas
IBM DB2
Otimizador baseado em custo e utiliza uma estrutura extensível baseada em
regra
39
Exercício
Facebook: /formasresearchgroup Twitter: /formasresearch
Semantic Formalisms and Applications Research Group
FORMAS - UFBA
www.dcc.ufba.br/~dclaro
Disciplina: MATA60
Material: Prof. Cristina Ciferri