160
Processamento de Consultas Banco de Dados: Teoria e Prática André Santanchè Instituto de Computação – UNICAMP Outubro 2012 Picture by http://www.flickr.com/photos/fdecomite/1457493536/

Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Processamento de Consultas

Banco de Dados: Teoria e Prática

André SantanchèInstituto de Computação – UNICAMP

Outubro 2012

Pic

ture

by

htt

p:/

/ww

w.f

lickr

.co

m/p

ho

tos/

fdec

om

ite/

1457

4935

36/

Page 2: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Execução de Consulta

–Passos Típicos

(Elmasri, 2010)

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 3: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Execução de Consulta

–Passos Típicos

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 4: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Análise e Validação

▪ Análise e Validação

▫ Análise léxica

▫ Análise sintática

▫ Validação

▪ Representações internas:

▫ árvore de consulta

▫ grafo de consulta

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 5: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Estratégia de Execução

▪ Consulta possui muitas estratégias de execução possíveis

▪ Planejamento da Estratégia de Execução

▫ Otimização processo de →escolha da estratégia adequada (razoavelmente eficiente)

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 6: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Código da Consulta

▪ Pode ser:

▫ Executado diretamente

◦ modo interpretado

▫ Armazenado e executado quando necessário

◦ modo compilado

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 7: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Execução do Código

▪ Processador executa código da consulta

▪ Produz resultado da execução

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 8: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Ênfase desta aula:Otimização de Consultas

Page 9: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Consultas Declarativas

▪ “O quê” ao invés de “Como”

▪ Otimização de consulta

▫ Solução razoavelmente eficiente (Elmasri, 2011)

▫ Solução ótima pode ser muito custoza

Page 10: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Consulta SQL emÁlgebra Relacional

▪ Consulta SQL Álgebra Relacional Estendida→▫ Inclui operadores como COUNT, SUM e MAX

▪ Consulta SQL decomposta em blocos

▫ Bloco de Consulta ou Bloco Simples:

◦ Contém uma única expressão SELECT-FROM-WHERE (GROUP BY e HAVING se houver)

◦ Sem aninhamento

▫ Consultas aninhadas são identificadas como consultas independentes

Page 11: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Decomposição em Blocos

Exemplo

▪ TabelaPessoa(Codigo, Nome, Telefone, AnoFiliacao)

▪ Nome dos filiados mais antigos:SELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = (SELECT MIN(AnoFiliacao)) FROM PESSOA)

▪ BlocosSELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = (referência )

SELECT MIN(AnoFiliacao))FROM PESSOA

Page 12: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos para Operações

Page 13: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Ordenação Externa

Page 14: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82

27 38 3 43 9 82

10

10

3 27 38 43 9 10 82

3 9 10 27 38 43 82

Merge Sort

Page 15: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82

27 38 3 43 9 82

10

10

3 27 38 43 9 10 82

3 9 10 27 38 43 82

Merge Sort

Page 16: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82

27 38 3 43 9 82

10

10

3 27 38 43 9 10 82

3 9 10 27 38 43 82

Ordenação Externa

Page 17: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Ordenação ExternaNúmeros

▪ bd – blocos em disco

▪ bm – blocos de memória

▪ Ordenação

▫ 2*bd transferências (leitura e gravação)

▪ Merge

▫ 2*bd transferências a cada estágio

▫ bd/bm - rodadas de ordenação

▫ logbm-1

(bd/bm) - níveis

▪ Custo: (2*bd) + (2*bd * logbm-1

(bd/bm))

Page 18: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seleção

Page 19: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Esquema Conceitual – ExemploTáxis

Este é um subconjunto do Estudo de Caso proposto “Despacho e controle de Táxis via terminais móveis ligados on-line com um sistema multi-usuário” por prof. Geovane Cayres Magalhães

Cliente TaxiCorrida1 N N 1

CliIdNome

DataPedido PlacaMarcaModeloAnoFab

Page 20: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Tabelas para exemplo - Táxis

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Táxi (TX)

ClId Placa DataPedido 1755 DAE6534 15/02/2003 1982 JDM8776 18/02/2003

Corrida (R1)

Page 21: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seleção?

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Placa='JDM8776'(TX)

Page 22: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exatamente IgualChave Primária

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Placa='JDM8776'(TX)

Page 23: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab=2002(TX)

Exatamente IgualOutra Chave

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 24: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab=2002(TX)

Seleção?

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 25: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab>2000(TX)

Seleção?

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 26: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab>2000(TX)

Faixa (>, <, >=, <=)

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 27: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos de Seleção

▪ Exatamente igual

▫ chave primária

▫ outra chave

▪ >, <, >=, <=

▪ compostos

Page 28: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos de Seleção

▪ Pesquisa linear

▪ Pesquisa binária

▪ Usando índice primário

▪ Usando chave hash

▪ Combinado com o índice primário

▪ Usando índice de agrupamento

▪ Usando índice secundário

Page 29: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seleção Conjuntiva x Dijuntiva

▪ seleção conjuntiva - e.g., and

▪ seleção dijuntiva - e.g., or

Page 30: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos de Seleção Conjuntiva

▪ Índice para uma das condições

▪ Índice composto envolvendo ambas as condições

▪ Índice individual para cada condição

Page 31: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seletividade

▪ seletividade: valor entre 0 e 1

▪ n registros

▪ igualdade atributo único

▫ seletividade: 1/n

Page 32: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SeletividadeAtributo Não Único

▪ i valores

▪ i igualmente distribuído

▪ registros por valor?

▪ seletividade?

Page 33: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SeletividadeAtributo Não Único

▪ i valores

▪ i igualmente distribuído

▪ n/i registros por valor

▪ seletividade: 1/i

Page 34: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SeletividadeAtributo Não Único

▪ primeiro as condições com valor menor de seletividade

Page 35: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção(Join)

Page 36: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção (Join) de Loop Aninhado

for each ti

for each tj

if match(ti, tj)

add-result(ti, tj)

Page 37: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ pares de tuplas? (comparações?)

Page 38: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ ni*nj - pares de tuplas

Page 39: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ ni*nj - pares de tuplas

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ leituras de blocos?

Page 40: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ ni*nj - pares de tuplas

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ bi + bj*ni leituras de blocos

Page 41: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ Situações:

▫ Quantas transferências de bloco se todos os blocos estiverem na memória?

▫ Quantas transferências se os blocos de um dos loops estiver todo na memória e qual deles escolher (bi ou bj)

Page 42: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ Situações:

▫ Quantas transferências de bloco se todos os blocos estiverem na memória?

◦ bi + bj transferências

▫ Quantas transferências se os blocos de um dos loops estiver todo na memória e qual deles escolher (bi ou bj)?

◦ escolher bj

◦ bi + bj transferências

Page 43: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop Aninhado em Bloco

for each bi

for each bj

for each ti

for each tj

if match(ti, tj)

add-result(ti, tj)

Page 44: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop Aninhado em BlocoNúmeros

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ leituras de blocos?

Page 45: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop Aninhado em BlocoNúmeros

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ bi + bj*bi leituras de blocos

Page 46: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Outras Junções

▪ Junção Indexada

▪ Junção Merge

▪ Junção Hash

Page 47: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Projeção

▪ Recorte dos campos

▪ (?)

Page 48: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Projeção

▪ Recorte dos campos

▪ Registros sem duplicatas

▫ SQL padrão não eliminar duplicatas→◦ DISTINCT elimina duplicatas→

▫ Registros com garantia de ser únicos

◦ e.g., contendo chave primária

▫ Registros sem garantia de ser únicos

◦ ordenação

◦ hashing

Page 49: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Otimização de Consulta

Page 50: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SQL p/ Álgebra

▪ Versão SQLSELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = 1990

▪ Versão em álgebra

Codigo,Nome

(AnoFiliacao=1990

(PESSOA))

▪ Versão Árvore

PESSOA

Codigo,Nome

AnoFiliacao=1990

Page 51: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Combinação de Operações usando Pipelining

▪ Uma consulta é mapeada em uma sequência de operações

▪ A execução de cada operação produz um resultado temporário

▪ Alternativa

▫ Evitar ao máximo resultados temporários

▫ Pipelining◦ concatena operações

◦ conforme uma saída é produzida gera entrada para a operação subsequente

Page 52: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

exemplo: Java Writer

Pipelining

Pattern Pipe & Filter

Page 53: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

1637 Doriana 9876-5432 1983

1701 Quincas 8765-4321 1985

2042 Melissa 7654-3210 1990

2111 Horácio 6543-2109 1983

PESSOA

PESSOA

Page 54: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

1637 Doriana 9876-5432 1983

1701 Quincas 8765-4321 1985

2042 Melissa 7654-3210 1990

2111 Horácio 6543-2109 1983

PESSOA

AnoFiliacao=1990

PESSOA

Page 55: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

PESSOACodigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

2042 Melissa 7654-3210 1990AnoFiliacao=1990

PESSOA

Page 56: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo,Nome

AnoFiliacao=1990

Codigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

2042 Melissa 7654-3210 1990

PESSOA

PESSOA

Page 57: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo,Nome

AnoFiliacao=1990

Codigo Nome

1525 Asdrúbal

2042 Melissa

PESSOA

PESSOA

Page 58: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Árvore de Consulta

PESSOA

Codigo,Nome

AnoFiliacao=1990

folha: relação de entrada

fluxo

Page 59: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurísticas para Otimização de Consulta

(Elmasri, 2011)

Page 60: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurísticas para Otimização de Consulta

▪ Título dos livros sobre poesia escritos depois de 1996

SELECT LIVRO.TituloFROM LIVRO, PERTENCE, CATEGORIAWHERE CATEGORIA.Nome = “poesia” AND LIVRO.ISBN = PERTENCE.ISBN AND CATEGORIA.Codigo = PERTENCE.CodCategoria AND LIVRO.Ano > 1996

Page 61: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística para Otimização de Consulta

LIVRO PERTENCE

CATEGORIAX

X

CATEGORIA.Nome=“poesia” AND LIVRO.ISBN=PERTENCE.ISBN AND

CATEGORIA.Codigo=PERTENCE.CodCategoria AND LIVRO.Ano>1996

LIVRO.Titulo

Page 62: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

1.Operações seleção conjuntivas podem se converter em cascatas de seleção

2.Operação de seleção é comutativa

3.Comutação de seleção com projeção

▫ caso o resultado da projeção tenha atributos requeridos pela seleção

Page 63: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

4.Seleção e junção (ou produto cartesiano) são comutativas

▫ se atributos da seleção são de apenas uma das relações

5.Operações de união e interseção são comutativas

▫ diferença não é

Page 64: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

6.Seleção é comutativa com operações de conjunto (união, interseção e diferença)

▫ sel (A @ B) equivale sel(A) @ sel(B)

Page 65: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurísticas

▪ Quebrar operações de seleção conjuntivas (1)

▫ maior liberdade

▪ Mover seleção em direção às folhas (2), (3), (4), (5) e (6)

▫ apenas 1 tabela acima da tabela→

▫ duas tabelas acima da junção→

Page 66: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Quebrando e Descendo Seleções

LIVRO

PERTENCE

CATEGORIAX

X

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

Page 67: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

7.As operações de junção e produto cartesiano são comutativas

8.As operações de junção, produto cartesiano, união e interseção são associativas

Page 68: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Operações de seleção mais restritivas devem ser executadas primeiro (5) e (6)

Page 69: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Troca de Categoria com Livro

LIVRO

PERTENCE

CATEGORIA

X

X

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

Page 70: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regra de Transformação

9.Operações de produto cartesiano + seleção podem se converter em junção

Page 71: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Converta produtos cartesianos + seleções em junções

Page 72: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Produto Cartesiano + Seleção = Junção

LIVROPERTENCE

CATEGORIA

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

Page 73: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

10.Cascata de projeções podem ser ignoradas e convertidas na última

▫ Pr1(Pr2(Pr3(A))) equivale Pr1(A)

11.Operações de projeção e união são comutativas

▫ proj (A U B) equivale proj(A) U proj(B)

Page 74: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

12.Operação de projeção pode ser comutada com junção (ou produto cartesiano)

▫ Relação A atributos a→1,...,a

n

▫ Relação B atributos b→1,...,b

m

▫ L = (a1,...,a

n,b

1,...,b

m)

▫ Condição só contém atributos L

▫ projL(A junção B) equivale (proj

a1,...,an(A)) junção

(projb1,...,bn

(B))

Page 75: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Baseados em (10), (11) e (12)

▫ Desmembrar operações de projeção

▫ Mover projeções em direção às folhas

▫ Criar operações de projeção para manter apenas atributos necessários

Page 76: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Projeções Mais Cedo

LIVROPERTENCE

CATEGORIA

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

CATEGORIA.Codigo

PERTENCE.ISBN

LIVRO.ISBN, LIVRO.Titulo

Page 77: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Identificar subárvores com operações a ser combinadas em um algoritmo

Page 78: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Referências

▪ Elmasri, Ramez; Navathe, Shamkant B. (2005) Sistemas de Bancos de Dados. Addison-Wesley, 4a edição em português.

▪ Elmasri, Ramez; Navathe, Shamkant B. (2011) Sistemas de Bancos de Dados. Addison-Wesley, 6a edição em português.

▪ Ramakrishnan, Raghu; Gehrke, Johannes (2003) Database Management Systems. McGraw-Hill, 3rd edition.

Page 79: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

André Santanchèhttp://www.ic.unicamp.br/~santanche

Page 80: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Licença▪ Estes slides são concedidos sob uma Licença Creative

Commons. Sob as seguintes condições: Atribuição, Uso Não-Comercial e Compartilhamento pela mesma Licença.

▪ Mais detalhes sobre a referida licença Creative Commons veja no link:http://creativecommons.org/licenses/by-nc-sa/3.0/

▪ Fotografia da capa e fundo porhttp://www.flickr.com/photos/fdecomite/Ver licença específica emhttp://www.flickr.com/photos/fdecomite/1457493536/

Page 81: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Processamento de Consultas

Banco de Dados: Teoria e Prática

André SantanchèInstituto de Computação – UNICAMP

Outubro 2012

Pic

ture

by

htt

p:/

/ww

w.f

lickr

.co

m/p

ho

tos/

fdec

om

ite/

1457

493

536/

Page 82: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Execução de Consulta

–Passos Típicos

(Elmasri, 2010)

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 83: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Execução de Consulta

–Passos Típicos

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 84: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Análise e Validação

▪ Análise e Validação

▫ Análise léxica

▫ Análise sintática

▫ Validação

▪ Representações internas:

▫ árvore de consulta

▫ grafo de consulta

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

“The scanner identifies the language tokens – such as SQL keywords, attribute names, and relation names – in the text of the query, whereas the parser checks the query syntax to determine whether it is formulated according to the syntax rules (rules of grammar) of the query language. The query must also be validated, by checking that all attribute and relation names are valid and semantically meaningful names in the schema of the particular database being queried. An internal representation of the query is then created, usually as a tree data structure called a query tree. It is also possible to represent the query using a graph data structure called a query graph. The DBMS must then devise an execution strategy for retrieving the result of the query from the database files. A query typically has many possible execution strategies, and the process of choosing a suitable one for processing a query is known as query optimization.” (Elmasri, 2005, p. 493)

Page 85: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Estratégia de Execução

▪ Consulta possui muitas estratégias de execução possíveis

▪ Planejamento da Estratégia de Execução

▫ Otimização processo de →escolha da estratégia adequada (razoavelmente eficiente)

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 86: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Código da Consulta

▪ Pode ser:

▫ Executado diretamente

◦ modo interpretado

▫ Armazenado e executado quando necessário

◦ modo compilado

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 87: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Execução do Código

▪ Processador executa código da consulta

▪ Produz resultado da execução

Consulta em linguagem de alto nível

Análise Léxica,Análise Sintática

e Validação

Forma intermediária de consulta

Gerador de códigode consulta

Otimizadorde Consulta

Plano de execução

Código para executar a consulta

Processador emtempo de execuçãodo banco de dados

Resultado da consulta

Page 88: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Ênfase desta aula:Otimização de Consultas

Page 89: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Consultas Declarativas

▪ “O quê” ao invés de “Como”

▪ Otimização de consulta

▫ Solução razoavelmente eficiente (Elmasri, 2011)

▫ Solução ótima pode ser muito custoza

Page 90: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Consulta SQL emÁlgebra Relacional

▪ Consulta SQL Álgebra Relacional Estendida→▫ Inclui operadores como COUNT, SUM e MAX

▪ Consulta SQL decomposta em blocos

▫ Bloco de Consulta ou Bloco Simples:

◦ Contém uma única expressão SELECT-FROM-WHERE (GROUP BY e HAVING se houver)

◦ Sem aninhamento

▫ Consultas aninhadas são identificadas como consultas independentes

“15.1.1 Decomposition of a Query into Blocks

When a user submits an SQL query, the query is parsed into a collection of query blocks and then passed on to the query optimizer. A query block (or simply block) is an SQL query with no nesting and exactly one SELECT clause and one FROM clause and at most one WHERE clause, GROUP BY clause, and HAVING clause.” (Ramakrishnan, 2003, p. 480)

“Typically, SQL queries are decomposed into query blocks, which form the basic units that can be translated into the algebraic operators and optimized. A query block contains a single SELECT-FROM-WHERE expression, as well as GROUP BY and HAVING clauses if these are part of the block. Hence, nested queries within a query are identified as separate query blocks.” (Elmasri, 2005, p. 495)

Page 91: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Decomposição em Blocos

Exemplo

▪ TabelaPessoa(Codigo, Nome, Telefone, AnoFiliacao)

▪ Nome dos filiados mais antigos:SELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = (SELECT MIN(AnoFiliacao)) FROM PESSOA)

▪ BlocosSELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = (referência )

SELECT MIN(AnoFiliacao))FROM PESSOA

(Elmasri, 2007, s. 15-8)

SELECT LNAME, FNAME

FROM EMPLOYEE

WHERE SALARY > ( SELECT MAX (SALARY)

FROM EMPLOYEE

WHERE DNO = 5);

SELECT MAX (SALARY)FROM EMPLOYEEWHERE DNO = 5

SELECT LNAME, FNAME

FROM EMPLOYEE

WHERE SALARY > C

πLNAME, FNAME (σSALARY>C(EMPLOYEE)) ℱMAX SALARY (σDNO=5 (EMPLOYEE))

Page 92: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos para Operações

Page 93: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Ordenação Externa

Page 94: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82

27 38 3 43 9 82

10

10

3 27 38 43 9 10 82

3 9 10 27 38 43 82

Merge Sort

Page 95: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82

27 38 3 43 9 82

10

10

3 27 38 43 9 10 82

3 9 10 27 38 43 82

Merge Sort

Page 96: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82 10

38 27 43 3 9 82

27 38 3 43 9 82

10

10

3 27 38 43 9 10 82

3 9 10 27 38 43 82

Ordenação Externa

Page 97: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Ordenação ExternaNúmeros

▪ bd – blocos em disco

▪ bm – blocos de memória

▪ Ordenação

▫ 2*bd transferências (leitura e gravação)

▪ Merge

▫ 2*bd transferências a cada estágio

▫ bd/bm - rodadas de ordenação

▫ logbm-1

(bd/bm) - níveis

▪ Custo: (2*bd) + (2*bd * logbm-1

(bd/bm))

Page 98: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seleção

Page 99: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Esquema Conceitual – ExemploTáxis

Este é um subconjunto do Estudo de Caso proposto “Despacho e controle de Táxis via terminais móveis ligados on-line com um sistema multi-usuário” por prof. Geovane Cayres Magalhães

Cliente TaxiCorrida1 N N 1

CliIdNome

DataPedido PlacaMarcaModeloAnoFab

Page 100: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Tabelas para exemplo - Táxis

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Táxi (TX)

ClId Placa DataPedido 1755 DAE6534 15/02/2003 1982 JDM8776 18/02/2003

Corrida (R1)

Page 101: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seleção?

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Placa='JDM8776'(TX)

Page 102: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exatamente IgualChave Primária

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Placa='JDM8776'(TX)

Page 103: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab=2002(TX)

Exatamente IgualOutra Chave

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 104: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab=2002(TX)

Seleção?

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 105: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab>2000(TX)

Seleção?

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 106: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

AnoFab>2000(TX)

Faixa (>, <, >=, <=)

Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

Page 107: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos de Seleção

▪ Exatamente igual

▫ chave primária

▫ outra chave

▪ >, <, >=, <=

▪ compostos

Page 108: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos de Seleção

▪ Pesquisa linear

▪ Pesquisa binária

▪ Usando índice primário

▪ Usando chave hash

▪ Combinado com o índice primário

▪ Usando índice de agrupamento

▪ Usando índice secundário

Page 109: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seleção Conjuntiva x Dijuntiva

▪ seleção conjuntiva - e.g., and

▪ seleção dijuntiva - e.g., or

Page 110: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Algoritmos de Seleção Conjuntiva

▪ Índice para uma das condições

▪ Índice composto envolvendo ambas as condições

▪ Índice individual para cada condição

Page 111: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Seletividade

▪ seletividade: valor entre 0 e 1

▪ n registros

▪ igualdade atributo único

▫ seletividade: 1/n

Page 112: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SeletividadeAtributo Não Único

▪ i valores

▪ i igualmente distribuído

▪ registros por valor?

▪ seletividade?

Page 113: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SeletividadeAtributo Não Único

▪ i valores

▪ i igualmente distribuído

▪ n/i registros por valor

▪ seletividade: 1/i

Page 114: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SeletividadeAtributo Não Único

▪ primeiro as condições com valor menor de seletividade

Page 115: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção(Join)

Page 116: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção (Join) de Loop Aninhado

for each ti

for each tj

if match(ti, tj)

add-result(ti, tj)

Page 117: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ pares de tuplas? (comparações?)

Page 118: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ ni*nj - pares de tuplas

Page 119: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ ni*nj - pares de tuplas

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ leituras de blocos?

Page 120: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ ni - número de tuplas ti

▪ nj - número de tuplas tj

▪ ni*nj - pares de tuplas

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ bi + bj*ni leituras de blocos

Page 121: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ Situações:

▫ Quantas transferências de bloco se todos os blocos estiverem na memória?

▫ Quantas transferências se os blocos de um dos loops estiver todo na memória e qual deles escolher (bi ou bj)

Page 122: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop AninhadoNúmeros

▪ Situações:

▫ Quantas transferências de bloco se todos os blocos estiverem na memória?

◦ bi + bj transferências

▫ Quantas transferências se os blocos de um dos loops estiver todo na memória e qual deles escolher (bi ou bj)?

◦ escolher bj

◦ bi + bj transferências

Page 123: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop Aninhado em Bloco

for each bi

for each bj

for each ti

for each tj

if match(ti, tj)

add-result(ti, tj)

Page 124: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop Aninhado em BlocoNúmeros

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ leituras de blocos?

Page 125: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Junção de Loop Aninhado em BlocoNúmeros

▪ bi - bloco de tuplas ti

▪ bj - bloco de tuplas tj

▪ bi + bj*bi leituras de blocos

Page 126: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Outras Junções

▪ Junção Indexada

▪ Junção Merge

▪ Junção Hash

Page 127: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Projeção

▪ Recorte dos campos

▪ (?)

Page 128: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Projeção

▪ Recorte dos campos

▪ Registros sem duplicatas

▫ SQL padrão não eliminar duplicatas→◦ DISTINCT elimina duplicatas→

▫ Registros com garantia de ser únicos

◦ e.g., contendo chave primária

▫ Registros sem garantia de ser únicos

◦ ordenação

◦ hashing

Page 129: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Otimização de Consulta

Page 130: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

SQL p/ Álgebra

▪ Versão SQLSELECT Codigo, NomeFROM PESSOAWHERE AnoFiliacao = 1990

▪ Versão em álgebra

Codigo,Nome

(AnoFiliacao=1990

(PESSOA))

▪ Versão Árvore

PESSOA

Codigo,Nome

AnoFiliacao=1990

Page 131: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Combinação de Operações usando Pipelining

▪ Uma consulta é mapeada em uma sequência de operações

▪ A execução de cada operação produz um resultado temporário

▪ Alternativa

▫ Evitar ao máximo resultados temporários

▫ Pipelining◦ concatena operações

◦ conforme uma saída é produzida gera entrada para a operação subsequente

Combining Operations using Pipelining (1)l Motivation

– A query is mapped into a sequence of operations.– Each execution of an operation produces a

temporary result.– Generating and saving temporary files on disk is

time consuming and expensive. l Alternative:

– Avoid constructing temporary results as much as possible.

– Pipeline the data through multiple operations - pass the result of a previous operator to the next without waiting to complete the previous operation.

__________(Elmasri, 2007, s. 15-37)

Page 132: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

exemplo: Java Writer

Pipelining

Pattern Pipe & Filter

Page 133: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

1637 Doriana 9876-5432 1983

1701 Quincas 8765-4321 1985

2042 Melissa 7654-3210 1990

2111 Horácio 6543-2109 1983

PESSOA

PESSOA

Page 134: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

1637 Doriana 9876-5432 1983

1701 Quincas 8765-4321 1985

2042 Melissa 7654-3210 1990

2111 Horácio 6543-2109 1983

PESSOA

AnoFiliacao=1990

PESSOA

Page 135: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

PESSOACodigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

2042 Melissa 7654-3210 1990AnoFiliacao=1990

PESSOA

Page 136: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo,Nome

AnoFiliacao=1990

Codigo Nome Telefone AnoFiliacao

1525 Asdrúbal 5432-1098 1990

2042 Melissa 7654-3210 1990

PESSOA

PESSOA

Page 137: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Exemplo de Pipeline

Codigo,Nome

AnoFiliacao=1990

Codigo Nome

1525 Asdrúbal

2042 Melissa

PESSOA

PESSOA

Page 138: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Árvore de Consulta

PESSOA

Codigo,Nome

AnoFiliacao=1990

folha: relação de entrada

fluxo

Page 139: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurísticas para Otimização de Consulta

(Elmasri, 2011)

Page 140: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurísticas para Otimização de Consulta

▪ Título dos livros sobre poesia escritos depois de 1996

SELECT LIVRO.TituloFROM LIVRO, PERTENCE, CATEGORIAWHERE CATEGORIA.Nome = “poesia” AND LIVRO.ISBN = PERTENCE.ISBN AND CATEGORIA.Codigo = PERTENCE.CodCategoria AND LIVRO.Ano > 1996

Page 141: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística para Otimização de Consulta

LIVRO PERTENCE

CATEGORIAX

X

CATEGORIA.Nome=“poesia” AND LIVRO.ISBN=PERTENCE.ISBN AND

CATEGORIA.Codigo=PERTENCE.CodCategoria AND LIVRO.Ano>1996

LIVRO.Titulo

Page 142: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

1.Operações seleção conjuntivas podem se converter em cascatas de seleção

2.Operação de seleção é comutativa

3.Comutação de seleção com projeção

▫ caso o resultado da projeção tenha atributos requeridos pela seleção

Page 143: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

4.Seleção e junção (ou produto cartesiano) são comutativas

▫ se atributos da seleção são de apenas uma das relações

5.Operações de união e interseção são comutativas

▫ diferença não é

Page 144: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

6.Seleção é comutativa com operações de conjunto (união, interseção e diferença)

▫ sel (A @ B) equivale sel(A) @ sel(B)

Page 145: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurísticas

▪ Quebrar operações de seleção conjuntivas (1)

▫ maior liberdade

▪ Mover seleção em direção às folhas (2), (3), (4), (5) e (6)

▫ apenas 1 tabela acima da tabela→

▫ duas tabelas acima da junção→

Page 146: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Quebrando e Descendo Seleções

LIVRO

PERTENCE

CATEGORIAX

X

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

Page 147: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

7.As operações de junção e produto cartesiano são comutativas

8.As operações de junção, produto cartesiano, união e interseção são associativas

Page 148: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Operações de seleção mais restritivas devem ser executadas primeiro (5) e (6)

Page 149: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Troca de Categoria com Livro

LIVRO

PERTENCE

CATEGORIA

X

X

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

Page 150: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regra de Transformação

9.Operações de produto cartesiano + seleção podem se converter em junção

Page 151: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Converta produtos cartesianos + seleções em junções

Page 152: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Produto Cartesiano + Seleção = Junção

LIVROPERTENCE

CATEGORIA

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

Page 153: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

10.Cascata de projeções podem ser ignoradas e convertidas na última

▫ Pr1(Pr2(Pr3(A))) equivale Pr1(A)

11.Operações de projeção e união são comutativas

▫ proj (A U B) equivale proj(A) U proj(B)

Page 154: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Regras de Transformação

12.Operação de projeção pode ser comutada com junção (ou produto cartesiano)

▫ Relação A atributos a→1,...,a

n

▫ Relação B atributos b→1,...,b

m

▫ L = (a1,...,a

n,b

1,...,b

m)

▫ Condição só contém atributos L

▫ projL(A junção B) equivale (proj

a1,...,an(A)) junção

(projb1,...,bn

(B))

Page 155: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Baseados em (10), (11) e (12)

▫ Desmembrar operações de projeção

▫ Mover projeções em direção às folhas

▫ Criar operações de projeção para manter apenas atributos necessários

Page 156: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Projeções Mais Cedo

LIVROPERTENCE

CATEGORIA

CATEGORIA.Codigo=PERTENCE.CodCategoria

LIVRO.Titulo

LIVRO.Ano>1996

LIVRO.ISBN=PERTENCE.ISBN

CATEGORIA.Nome=“poesia”

CATEGORIA.Codigo

PERTENCE.ISBN

LIVRO.ISBN, LIVRO.Titulo

Page 157: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Heurística

▪ Identificar subárvores com operações a ser combinadas em um algoritmo

Page 158: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Referências

▪ Elmasri, Ramez; Navathe, Shamkant B. (2005) Sistemas de Bancos de Dados. Addison-Wesley, 4a edição em português.

▪ Elmasri, Ramez; Navathe, Shamkant B. (2011) Sistemas de Bancos de Dados. Addison-Wesley, 6a edição em português.

▪ Ramakrishnan, Raghu; Gehrke, Johannes (2003) Database Management Systems. McGraw-Hill, 3rd edition.

Page 159: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

André Santanchèhttp://www.ic.unicamp.br/~santanche

Page 160: Processamento de Consultas - Instituto de Computaçãosantanch/teaching/db/... · do banco de dados Resultado da consulta. Execução de ... Tabela Pessoa(Codigo, Nome, Telefone,

Licença▪ Estes slides são concedidos sob uma Licença Creative

Commons. Sob as seguintes condições: Atribuição, Uso Não-Comercial e Compartilhamento pela mesma Licença.

▪ Mais detalhes sobre a referida licença Creative Commons veja no link:http://creativecommons.org/licenses/by-nc-sa/3.0/

▪ Fotografia da capa e fundo porhttp://www.flickr.com/photos/fdecomite/Ver licença específica emhttp://www.flickr.com/photos/fdecomite/1457493536/