40
MATA60 BANCO DE DADOS Aula: Otimização Prof. Daniela Barreiro Claro

MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

MATA60 – BANCO DE DADOSAula: Otimização

Prof. Daniela Barreiro Claro

Page 2: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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.

Page 3: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 4: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 5: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 6: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

6

Exemplo de Tradução de uma consulta

SQL

Q

Page 7: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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)

Page 8: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 9: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

9

Arvore Canônica

Page 10: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

10

Arvore de consulta

Page 11: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

11

Arvore de consulta

Page 12: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

12

Arvore de consulta

Page 13: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

13

Arvore de consulta

Page 14: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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.

Page 15: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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))

Page 16: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 17: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 18: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

18

Regras Heuristicas

Page 19: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

19

Regras Heuristicas

Page 20: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

20

Regras Heuristicas

Page 21: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

21

Análise

Page 22: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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)

Page 23: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

23

Exercício

• Arvore Canônica – arvore 1

Page 24: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

24

Exercício

• Conversão da Arvore de Consulta

Page 25: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

25

Exercício

• Conversão da Arvore de Consulta

Page 26: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

26

Exercício

• Conversão da Arvore de Consulta

Page 27: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

27

Exercício

• Conversão da Arvore de Consulta

Page 28: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 29: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 30: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 31: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 32: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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)

Page 33: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 34: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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.

Page 35: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 36: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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.

Page 37: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 38: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

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

Page 39: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

39

Exercício

Page 40: MATA60 BANCO DE DADOSformas.ufba.br/dclaro/mata60/Aula 11 - Otimizacao.pdf · 2018-03-14 · SQL, SQL3 e OQL são linguagens declarativas ... Comutatividade de Join e Natural Join

Facebook: /formasresearchgroup Twitter: /formasresearch

Semantic Formalisms and Applications Research Group

FORMAS - UFBA

www.dcc.ufba.br/~dclaro

Disciplina: MATA60

Material: Prof. Cristina Ciferri