processamento de consultas
play

Processamento de Consultas Picture by - PowerPoint PPT Presentation

Processamento de Consultas Picture by http://www.flickr.com/photos/fdecomite/1457493536/ Banco de Dados: Teoria e Prtica Andr Santanch e Luiz Celso Gomes Jr Instituto de Computao UNICAMP Setembro 2013 Execuo de Consulta em


  1. Processamento de Consultas Picture by http://www.flickr.com/photos/fdecomite/1457493536/ Banco de Dados: Teoria e Prática André Santanchè e Luiz Celso Gomes Jr Instituto de Computação – UNICAMP Setembro 2013

  2. Execução de Consulta em linguagem de alto nível Consulta Análise Léxica, Análise Sintática e Validação – Forma intermediária de consulta Passos Típicos Otimizador (Elmasri, 2010) de Consulta Plano de execução Gerador de código de consulta Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

  3. Consulta em linguagem de alto nível Execução de Análise Léxica, Consulta Análise Sintática e Validação – Forma intermediária de consulta Passos Típicos Otimizador de Consulta Plano de execução Gerador de código de consulta Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

  4. Consulta em linguagem de alto nível Análise e Validação Análise Léxica, Análise Sintática e Validação ▪ Análise e Validação Forma intermediária de consulta ▫ Análise léxica Otimizador de Consulta ▫ Análise sintática Plano de execução ▫ Validação ▪ Representações internas: Gerador de código de consulta ▫ árvore de consulta Código para executar a consulta ▫ grafo de consulta Processador em tempo de execução do banco de dados Resultado da consulta

  5. Estratégia de Consulta em linguagem de alto nível Execução Análise Léxica, Análise Sintática e Validação ▪ Consulta possui muitas Forma intermediária de consulta estratégias de execução Otimizador possíveis de Consulta ▪ Planejamento da Plano de execução Estratégia de Execução Gerador de código → de consulta ▫ Otimização processo de escolha da estratégia Código para executar a consulta adequada (razoavelmente eficiente) Processador em tempo de execução do banco de dados Resultado da consulta

  6. Consulta em linguagem de alto nível Código da Consulta Análise Léxica, Análise Sintática e Validação ▪ Pode ser: Forma intermediária de consulta ▫ Executado diretamente Otimizador de Consulta ◦ modo interpretado ▫ Armazenado e executado Plano de execução quando necessário Gerador de código de consulta ◦ modo compilado Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

  7. Consulta em linguagem de alto nível Execução do Código Análise Léxica, Análise Sintática e Validação ▪ Processador executa Forma intermediária de consulta código da consulta Otimizador ▪ Produz resultado da de Consulta execução Plano de execução Gerador de código de consulta Código para executar a consulta Processador em tempo de execução do banco de dados Resultado da consulta

  8. Ênfase desta aula: Otimização de Consultas

  9. 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 custosa

  10. 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

  11. Decomposição em Blocos Exemplo ▪ Tabela Pessoa(Codigo, Nome, Telefone, AnoFiliacao) ▪ Nome dos filiados mais antigos: SELECT Codigo, Nome FROM PESSOA WHERE AnoFiliacao = (SELECT MIN(AnoFiliacao)) FROM PESSOA) ▪ Blocos  SELECT Codigo, Nome FROM PESSOA WHERE AnoFiliacao = (referência  )  SELECT MIN(AnoFiliacao)) FROM PESSOA

  12. Algoritmos para Operações

  13. Ordenação Externa

  14. Merge Sort Tradicional 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 10 27 38 3 43 9 82 10 3 27 38 43 9 10 82 3 9 10 27 38 43 82

  15. Ordenação Externa

  16. entrada 5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 Entrada organizada em páginas de tamanhos iguais: ● 13 blocos de disco (bd) ● 3 blocos de memória (bm) Exemplo Inspirado em (Ramakrishnan, 2013)

  17. entrada 5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 passo 0 5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5 ordenação Passo inicial de ordenação de páginas em memória: ● pode ser usado qualquer algoritmo (e.g., quick sort) ● 13 leituras e 13 gravações de bloco (bd*2 transferências)

  18. entrada 5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 passo 0 5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5 ordenação 2 , 5 1 , 4 1 , 3 5 passo 1 merge 7 , 9 6 , 8 6 , 9 Primeiro merge: ● 3 blocos de memória (bm) ● 13 leituras e 13 gravações de bloco (bd*2 transferências)

  19. entrada 5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 passo 0 5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5 ordenação 2 , 5 1 , 4 1 , 3 5 passo 1 merge 7 , 9 6 , 8 6 , 9 1 , 2 1 , 3 4 , 5 5 , 6 passo 2 merge 6 , 7 9 8 , 9 Segundo merge: ● 3 blocos de memória (bm) ● 13 leituras e 13 gravações de bloco (bd*2 transferências)

  20. entrada 5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 passo 0 5 , 9 2 , 7 4 , 8 1 , 6 3 , 6 1 , 9 5 ordenação 2 , 5 1 , 4 1 , 3 5 passo 1 merge 7 , 9 6 , 8 6 , 9 1 , 2 1 , 3 4 , 5 5 , 6 passo 2 merge 6 , 7 9 8 , 9 1 , 1 2 , 3 Terceiro merge: 4 , 5 passo 3 5 , 6 ● 3 bms merge 6 , 7 ● bd*2 transferências 8 , 9 9

  21. Ordenação Externa Números ▪ bd – blocos em disco ▪ bm – blocos de memória ▫ bm e – blocos de entrada = bm - 1 ▫ bm s – blocos de saída = 1

  22. Ordenação Externa Números ▪ Ordenação – passo 0 ▫ 2*bd = 2*13 = 26 transferências (leitura e gravação) ▪ Merge ▫ 2*bd = 2*13 = 26 transferências a cada estágio ▪ Rodadas por nível ▫ rodadas =  bd/bm e  = 13 /2  = 8 ▪ Níveis ▫  log 2 rodadas  +1 =  log 2 8 +1 = 4 níveis ▪ Custo: 2*bd * (  log 2 rodadas  +1)

  23. Como Otimizar?

  24. Se eu tiver 5 blocos de memória?

  25. entrada 5 , 9 7 , 2 8 , 4 1 , 6 3 , 6 9 , 1 5 2 , 5 1 , 4 1 , 3 5 passo 0 ordenação 7 , 9 6 , 8 6 , 9 1 , 1 2 , 3 4 , 5 passo 1 5 , 6 merge 6 , 7 8 , 9 9

  26. Ordenação Externa Números ▪ Ordenação – passo 0 ▫ 2*bd = 2*13 = 26 transferências (leitura e gravação) ▪ Merge ▫ 2*bd = 2*13 = 26 transferências a cada estágio ▪ Rodadas por nível ▫ rodadas =  bd/bm e  = 13 /4  = 4 ▪ Rodadas (níveis) ▫  log bme rodadas  +1 =  log 4 4 +1 = 2 rodadas ▪ Custo: 2*bd * (  log bme rodadas  +1)

  27. Seleção

  28. Esquema Conceitual – Exemplo Táxis CliId DataPedido Placa Nome Marca Modelo AnoFab 1 N N 1 Cliente Taxi Corrida 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

  29. Tabelas para exemplo - Táxis Táxi (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999 Corrida (R1) ClId Placa DataPedido 1755 DAE6534 15/02/2003 1982 JDM8776 18/02/2003

  30. Seleção?  Placa='JDM8776' (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

  31. Exatamente Igual Chave Primária  Placa='JDM8776' (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

  32. Exatamente Igual Outra Chave  AnoFab=2002 (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

  33. Seleção?  AnoFab=2002 (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

  34. Seleção?  AnoFab>2000 (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

  35. Faixa (>, <, >=, <=)  AnoFab>2000 (TX) Placa Marca Modelo AnoFab DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002 JJM3692 Chevrolet Corsa 1999

  36. Algoritmos de Seleção ▪ Exatamente igual ▫ chave primária ▫ outra chave ▪ >, <, >=, <= ▪ compostos

  37. 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

  38. Seleção Conjuntiva x Dijuntiva ▪ seleção conjuntiva - e.g., and ▪ seleção dijuntiva - e.g., or

Recommend


More recommend