26
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

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

Embed Size (px)

Citation preview

Page 1: 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

Sumário

1 SQL Embutida2 Processamento de Consultas3 Introdução a Transações4 Recuperação de Falhas5 Controle de Concorrência6 Banco de Dados Distribuído

Page 2: 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

Page 3: 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

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ão-

otimizada de processamento– Quase sempre: Tx Ty

Page 4: 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

Etapas de ProcessamentoTradução

Transformação

Definição do Plano de Execução

Consulta em linguagem de alto nível

(consulta SQL, p. ex.)

Representação interna(árvore algébrica da consulta)

Representação transformada(árvore otimizada algebricamente)

Plano de Execução(árvore com indicação de

estratégias de acesso)

Processador Run-time

Gerador de Código

Código de Execução

Resultado da Consulta

Page 5: 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

Etapas de ProcessamentoTradução

Transformação

Definição do Plano de Execução

Consulta em linguagem de alto nível

(consulta SQL, p. ex.)

Representação interna(árvore algébrica da consulta)

Representação transformada(árvore otimizada algebricamente)

Plano de Execução(árvore com indicação de

estratégias de acesso)

Processador Run-time

Gerador de Código

Código de Execução

Resultado da Consulta

• análise léxica - cláusulas SQL e nomes válidos• análise sintática - validação da gramática• análise semântica - nomes usados de acordo com a estrutura do esquema• conversão para uma árvore algébrica

da consulta

Page 6: 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

Á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

Page 7: 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

Exemplo de Árvore da Consultaselect m.CRM, m.nome, a.número, a.andarfrom Médicos m, Ambulatórios awhere m.especialidade = ‘ortopedia’and a.andar = 2and m.número = a.número

Médicos Ambulatórios

X

m.especialidade = ‘ortopedia’

a.andar = 2

m.número = a.número

m.CRM, m.nome,

a.número, a.andar

Page 8: 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

Etapas de ProcessamentoTradução

Transformação

Definição do Plano de Execução

Consulta em linguagem de alto nível

(consulta SQL, p. ex.)

Representação interna(árvore algébrica da consulta)

Representação transformada(árvore otimizada algebricamente)

Plano de Execução(árvore com indicação de

estratégias de acesso)

Processador Run-time

Gerador de Código

Código de Execução

Resultado da Consulta

• definição de uma árvore de consulta equivalente

- chega ao mesmo resultado- processa de forma mais eficiente

• também chamada de Otimização Algébrica

Page 9: 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

Exemplo de Árvore Equivalente

Médicos Ambulatórios

X

m.especialidade = ‘ortopedia’

a.andar = 2

m.número = a.número

m.CRM, m.nome,

a.número, a.andar

Médicos Ambulatórios

X

m.número = a.número

m.CRM, m.nome,

a.número, a.andar

m.especialidade

= ‘ortopedia’

a.andar = 2

Page 10: 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

Etapas de ProcessamentoTradução

Transformação

Definição do Plano de Execução

Consulta em linguagem de alto nível

(consulta SQL, p. ex.)

Representação interna(árvore algébrica da consulta)

Representação transformada(árvore otimizada algebricamente)

Plano de Execução(árvore com indicação de

estratégias de acesso)

Processador Run-time

Gerador de Código

Código de Execução

Resultado da Consulta

análise de alternativas de definição de estratégias de acesso

- escolha de algoritmos para implementação de operações- existência de índices- estimativas sobre os dados (tamanho de tabelas, seletividade, ...)

Page 11: 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

Exemplo de Plano de Execução

Médicos Ambulatórios

X

m.número = a.número

m.CRM, m.nome,

a.número, a.andar

m.especialidade

= ‘ortopedia’

a.andar = 2 (pesquisa linear)(pesquisa indexada)

(loop-aninhado)

(processamento pipeline)

Page 12: 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

Etapas de ProcessamentoTradução

Transformação

Definição do Plano de Execução

Consulta em linguagem de alto nível

(consulta SQL, p. ex.)

Representação interna(árvore algébrica da consulta)

Representação transformada(árvore otimizada algebricamente)

Plano de Execução(árvore com indicação de

estratégias de acesso)

Processador Run-time

Gerador de Código

Código de Execução

Resultado da Consulta

Page 13: 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

Etapas de ProcessamentoTradução

Transformação

Definição do Plano de Execução

Consulta em linguagem de alto nível

(consulta SQL, p. ex.)

Representação interna(árvore algébrica da consulta)

Representação transformada(árvore otimizada algebricamente)

Plano de Execução(árvore com indicação de

estratégias de acesso)

Processador Run-time

Gerador de Código

Código de Execução

Resultado da Consulta

FOCO:OTIMIZADOR DE

CONSULTA

Page 14: 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

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

Page 15: 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

Regras de Equivalência1. 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?

Page 16: 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

Regras de Equivalência4. 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

Page 17: 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

Regras de Equivalência6. Comutatividade de Seleções e Operações Produtórias

(a) c (R “X” S) (c (R)) “X” S ou

(b) c (R “X” S) (c1 (R)) “X” (c2 (S)) - válidas em que situações?

7. Comutatividade de Projeções e Operações Produtórias

(a) 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)))- válidas em que situações?

Page 18: 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

Regras de Equivalência8. 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 ou ou -por quê a “” não é associativa?

Page 19: 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

Regras de Equivalência10. Comutatividade de Seleção e Operações de Conjunto (“”)

11. Comutatividade de Projeção e União

c (R “” S) (c (R)) “” (c (S))

- por “” entenda-se: ou ou

listaAtributos (R S) (listaAtributos (R)) (listaAtributos (S))

- por quê a “” e a “” não são comutativas?

Page 20: 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

Regras de Equivalência12. Fusão de Seleções e Operações Produtórias

(a) c (R X S) R X = c S ou

(b) c (R X S) R S ou

(c) R X = c S R S

- válidas em quais situações?

c

c

Page 21: 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

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

Page 22: 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

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

Page 23: 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

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

Page 24: 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

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”

Page 25: 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

Passo 6 - Exemplo

R S

r1, s1, s2, t1, t2

r1 = x s1 > y

S

s1 > y

T

t2 < z

R

r1, s1, s2, t1, t2

r1 = x

S

s1 > y

T

t2 < z

X X

Page 26: 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

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)