Plano de Execução

Propaganda
Sumário
1 SQL Embutida
2 Processamento de Consultas
3 Introdução a Transações
4 Recuperação de Falhas
5 Controle de Concorrência
6 Banco de Dados Distribuído
Processamento de Consultas
• Extração de informações do BD
• Consulta SQL
– adequada para uso humano
– não adequada para processamento pelo SGBD
• não descreve uma seqüência de passos
(procedimento) a ser seguida
• não descreve uma estratégia eficiente para a
implementação de cada passo no que diz respeito ao
acesso a nível físico (arquivos do BD)
• O SGBD deve se preocupar com este
processamento!
– módulo Processador de Consultas
Módulo Processador de Consultas
• Objetivo
– otimização do processamento de uma consulta
• tradução, transformação e geração de uma estratégia
(plano) de execução
• estratégia de acesso
– leva em conta algoritmos predefinidos para implementação de
passos do processamento e estimativas sobre os dados
• Vale a pena todo este esforço? Sim!
– Tx = tempo para definir e executar uma estratégia
otimizada de processamento
– Ty = tempo para executar uma estratégia nãootimizada de processamento
– Quase sempre: Tx  Ty
Etapas de Processamento
Consulta em linguagem
de alto nível
Tradução
(consulta SQL, p. ex.)
Representação interna
Transformação
(árvore algébrica da consulta)
Representação transformada
(árvore otimizada algebricamente)
Gerador de Código
Código de
Execução
Definição do
Plano de Execução
Plano de Execução
(árvore com indicação de
estratégias de acesso)
Processador Run-time
Resultado da
Consulta
Etapas de Processamento
Consulta em linguagem
de alto nível
Tradução
(consulta SQL, p. ex.)
Transformação
Representação interna
(árvore algébrica da consulta)
Definição do
Representação transformada
• análise
léxica
(árvore
otimizada
algebricamente)
Plano de Execução
- cláusulas SQL e nomes válidos
• análise sintática
- validação da gramática
Plano de Execução
•Gerador
análise semântica
de Código
(árvore com indicação de
- nomes usados de acordo com a estrutura
estratégias de acesso)
do esquema
• conversão para uma árvore algébrica
Resultado da
Código de da consulta
Processador Run-time
Consulta
Execução
Árvore (Algébrica) da Consulta
• Estrutura que representa o mapeamento da
consulta para a álgebra relacional
– uma expressão da álgebra relacional “estendida”
• pode indicar alguma computação (função agregação, atributo
calculado, ...)
– nodos folha: relações (do BD ou resultados intermediários)
– nodos internos: operações da álgebra
• Processamento da árvore
– nodos internos são executados quando seus operandos
estão disponíveis
– são substituídos pela relação resultante
– a execução termina quando o nodo raiz é executado
Exemplo de Árvore da Consulta
select m.CRM, m.nome, a.número, a.andar
from Médicos m, Ambulatórios a
where m.especialidade = ‘ortopedia’
and a.andar = 2
and m.número = a.número
 m.CRM, m.nome,
a.número, a.andar
 m.especialidade =
‘ortopedia’
 a.andar = 2
 m.número = a.número
X
Médicos
Ambulatórios
Etapas de Processamento
Consulta em linguagem
de alto nível
Tradução
(consulta SQL, p. ex.)
Representação interna
Transformação
(árvore algébrica da consulta)
Representação transformada
(árvore otimizada algebricamente)
Gerador de Código
Código de
Execução
Definição do
• definição de uma árvore de
Plano de Execução
consulta equivalente
- chega ao mesmo resultado
- processa de forma mais
Plano de Execução
eficiente
(árvorechamada
com indicação
• também
de de
estratégias de acesso)
Otimização Algébrica
Processador Run-time
Resultado da
Consulta
Exemplo de Árvore Equivalente
 m.CRM, m.nome,
a.número, a.andar
 m.CRM, m.nome,
 m.número = a.número
a.número, a.andar
 m.especialidade =
‘ortopedia’
 a.andar = 2
 m.número = a.número

X
X
 m.especialidade
a.andar = 2
= ‘ortopedia’
Médicos
Ambulatórios
Médicos
Ambulatórios
Etapas de Processamento
Consulta
linguagemde definição de
análise deem
alternativas
Tradução
de altodenível
estratégias
acesso
(consulta
SQL,
ex.)
- escolha
dep.algoritmos
para
implementação de operações
- existência de índices
Representação interna
Transformação
(árvore algébrica da consulta)
- estimativas sobre os dados
(tamanho de tabelas, seletividade, ...)
Representação transformada
(árvore otimizada algebricamente)
Gerador de Código
Código de
Execução
Definição do
Plano de Execução
Plano de Execução
(árvore com indicação de
estratégias de acesso)
Processador Run-time
Resultado da
Consulta
Exemplo de Plano de Execução
 m.CRM, m.nome,
a.número, a.andar
(processamento pipeline)
 m.número = a.número
X
(pesquisa linear)
(loop-aninhado)
 m.especialidade
= ‘ortopedia’
Médicos
a.andar = 2
(pesquisa indexada)
Ambulatórios
Etapas de Processamento
Consulta em linguagem
de alto nível
Tradução
(consulta SQL, p. ex.)
Representação interna
Transformação
(árvore algébrica da consulta)
Representação transformada
(árvore otimizada algebricamente)
Gerador de Código
Código de
Execução
Definição do
Plano de Execução
Plano de Execução
(árvore com indicação de
estratégias de acesso)
Processador Run-time
Resultado da
Consulta
Etapas de Processamento
Consulta em linguagem
de alto nível
Tradução
(consulta SQL, p. ex.)
Representação interna
Transformação
(árvore algébrica da consulta)
Representação transformada
(árvore otimizada algebricamente)
Definição do
Plano de Execução
FOCO:
OTIMIZADOR DE
CONSULTA
Plano de Execução
Gerador de Código
(árvore com indicação de
estratégias de acesso)
Código de
Execução
Processador Run-time
Resultado da
Consulta
Otimização Algébrica
• Objetivo do passo de Transformação
– entrada: árvore da consulta inicial
– saída: árvore da consulta otimizada (pode manter
a mesma árvore)
• Base
– regras de equivalência algébrica
• devem ser conhecidas pelo otimizador para que
possam ser geradas transformações válidas
– algoritmo de otimização algébrica
• indica a ordem de aplicação das regras e de outros
processamentos de otimização
Regras de Equivalência
1. Cascata de Seleções
c1  c2  ... cn (R)  c1 (c2 (... (cn (R))))
2. Comutatividade de Seleções
c1 (c2 (R))  c2 (c1 (R))
3. Cascata de Projeções
listaAtributos1 (R)  listaAtributos1 (listaAtributos2 (...(listaAtributosN (R))))
- válido em que situação?
Regras de Equivalência
4. Comutatividade de Seleções e Projeções
a1, a2 , ..., an (c (R))  c (a1, a2 , ..., an (R))
- válido em que situação?
5. Comutatividade de Operações Produtórias (“X”)
R “X” S  S “X” R
- por “X” entenda-se: X ou X  ou
- a ordem dos atributos e tuplas do resultado não é relevante
Regras de Equivalência
6. Comutatividade de Seleções e Operações Produtórias
(a)
c (R “X” S)  (c (R)) “X” S
(b)
c (R “X” S)  (c1 (R)) “X” (c2 (S))
ou
- válidas em que situações?
7. Comutatividade de Projeções e Operações Produtórias
listaAtributos1 (R “X” S)  (listaAtributos2 (R)) “X” S
ou
(b) listaAtributos1 (R “X” S)  (listaAtributos2 (R)) “X” (listaAtributos3 (S))ou
(c) listaAtributos1 (R “X” S)  listaAtributos1 ((listaAtributos2 (R)) “X”
(listaAtributos3 (S)))
(a)
- válidas em que situações?
Regras de Equivalência
8. Comutatividade de Operações de Conjunto
RS  SR
e
RS  SR
- por quê a “” não é comutativa?
9. Associatividade de Operações Produtórias e de Conjunto (“X”)
(R “X” S) “X” T  R “X” (S “X” T)
- por “X” entenda-se: X ou X  ou
-por quê a “” não é associativa?
ou  ou 
Regras de Equivalência
10. Comutatividade de Seleção e Operações de Conjunto (“”)
c (R “” S)  (c (R)) “” (c (S))
- por “” entenda-se:  ou  ou 
11. Comutatividade de Projeção e União
listaAtributos (R  S)  (listaAtributos (R))  (listaAtributos (S))
- por quê a “” e a “” não são comutativas?
Regras de Equivalência
12. Fusão de Seleções e Operações Produtórias
(a)
c (R X S)  R X  = 
(b)
c (R X S)  R
(c)
R X  = c S  R
c
S
S
c
- válidas em quais situações?
c
S
ou
ou
Algoritmo de Otimização Algébrica
• Algoritmo de alto (altíssimo!) nível
• Composto de 6 grandes passos
• Passo 1
– aplicar a regra 1
• desmembrar operações de seleção
• maior flexibilidade para mover seleções
• Passo 2
– aplicar as regras 2, 4, 6 e 10
• objetivo
– mover seleções para níveis inferiores da árvore o máximo
possível
Algoritmo de Otimização Algébrica
• Passo 3
– aplicar as regras 5 e 9
• mudar de posição sub-árvores envolvidas em
operações produtórias
• objetivos
– combinar prioritariamente sub-árvores com menor número
de dados
» investigar sub-árvores com seleções mais restritivas
– evitar produtos cartesianos
» combinações sem atributos de junção
• como saber quais as seleções mais restritivas?
– análise do grau de seletividade de um predicado
» estatística geralmente mantida no DD
Grau de Seletividade (GS)
• Definido pela seguinte razão
– GS = tp(R) / |R|, onde tp(R) é o número de tuplas que
satisfazem o predicado em uma relação R e |R| é o
número de tuplas em R (GS  [0,1])
• GS pequeno ( 0)  seleção mais restritiva
• Um atributo chave ac possui baixo GS em
predicados de igualdade
– GS(ac) = 1 / |R|
• Geralmente mantém-se uma estimativa de
distribuição uniforme de valores de atributos
– GS(ai) = (|R| / V(ai)) / |R| = 1 / V(ai), onde V(ai) é o
número de valores distintos de ai
Algoritmo de Otimização Algébrica
• Passo 4
– aplicar a regra 12
• otimizar operações produtórias
• Passo 5
– aplicar as regras 3, 4, 7 e 11
• desmembrar e mover projeções para níveis inferiores da árvore,
tanto quanto possível, definindo novas projeções conforme se
faça necessário
• Passo 6
– identificar sub-árvores que representem grupos de
operações que possam ser executadas por um único
algoritmo
• defina-os uma única vez (uma única sub-árvore) na “árvore”
Passo 6 - Exemplo
 r1, s1, s2, t1, t2
 r1, s1, s2, t1, t2
X
X
 r1 = x
s1 > y s1 > y
R
S
S
 t2 < z
 r1 = x
s1 > y
 t2 < z
T
R
S
T
Exercício – Operadores Lógicos
• Considerando que p1, p2 e p3 são
predicados de seleção, explique por quê as
leis abaixo são úteis no algoritmo de
otimização algébrica
• Leis de De Morgan
(a)  (p1  p2)  ( p1)  ( p2)
(b)  (p1  p2)  ( p1)  ( p2)
• Leis da Distributividade
(a) p1  (p2  p3)  (p1  p2)  (p1  p3)
(b) p1  (p2  p3)  (p1  p2)  (p1  p3)
Download