Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas - PDF Download grátis
Download "Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas"
Andreia Estrada Fagundes
1 Processamento e Otimização de Consultas Banco de Dados
2 Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar a resposta, independentemente de ser a estratégia mais eficiente SGBD responsável por transformar a consulta realizada pelo usuário em uma consulta equivalente mais eficiente
3 Processamento de Consultas Característica melhoria da estratégia para processamento de uma consulta não apresenta uma estratégia ótima porém apresenta uma estratégia eficiente Modelo relacional facilita a otimização da consulta permite que uma consulta seja expressa inteiramente em uma linguagem de consulta relacional (i.e., SQL) sem o uso de uma linguagem hospedeira
4 Processamento de Consultas Técnica utilizada para processar, otimizar e executar consultas de alto nível Objetivo: produzir uma estratégia de consulta para recuperar o resultado da mesma plano para: executar a consulta acessar os dados armazenar resultados intermediários
5 consulta em uma linguagem de alto nível análise léxica, sintática e semântica forma intermediária de consulta otimizador de consulta plano de execução gerador de código da consulta código para executar a consulta processador de BD de tempo de execução resultado da consulta
6 Detalhamento Análises (léxica, sintática, semântica) verificam a sintaxe da consulta verificam se os nomes das relações da consulta são os mesmos nomes presentes no BD substituem referências ao nome de uma visão por expressões da álgebra, a fim de computar essa visão
7 Detalhamento Forma intermediária de consulta utiliza estrutura de dados de árvore ou grafo (árvore de consulta ou grafo de consulta) Módulo de otimização de consulta produz um plano de estratégia de execução indica qual o plano de execução gera o código da consulta para executar tal plano
8 Detalhamento Processador do BD de tempo de execução executa o código da consulta (compilado ou interpretado) produz o resultado da consulta
9 Fase 0 nível de SQL Fases consiste em transformar a consulta expressa em SQL em uma árvore de consulta expressa em álgebra relacional
10 Fase 1 Fases nível de álgebra relacional consiste em aplicar heurísticas para converter uma árvore de consulta em uma árvore de consulta equivalente consiste em encontrar uma expressão que seja equivalente à expressão dada, mas que seja mais eficiente na sua execução
11 Fase 2 Fases consiste na seleção de uma estratégia detalhada para o processamento da consulta como a consulta será executada quais índices serão escolhidos qual a ordem de processamento das tuplas
12 Árvore de Consulta (Fase 0) Estrutura de árvore que corresponde a uma expressão da álgebra relacional Representação nós folhas relações de entrada para a consulta nós internos operações da álgebra relacional Indica uma ordem específica das operações durante a execução de uma consulta
13 Árvore de Consulta Execução efetuar uma operação do nó interno sempre que os seus operandos estiverem disponíveis substituir o nó interno pela relação que resulta da execução da operação final da execução: o nó raiz é executado a relação resultado para a consulta é produzida
14 Exemplo Dado o seguinte comando SQL SELECT E.último_nome FROM empregado E, trabalha T, projeto P WHERE P.nome_projeto = arquivo X AND P.nro_projeto = T.nro_projeto AND E.nro_empregado = T.nro_empregado Construa a árvore de consulta canônica
15 Árvore de Consulta Canônica árvore de consulta 1 π E.último_nome σ P.nome_projeto= arquivo X ^ P.nro_projeto=T.nro_projeto ^ E.nro_empregado=T.nro_empregado P E T
16 Conversão da Árvore de Consulta (Fase 1) Observações o produto cartesiano das relações empregado, trabalha e projeto produz uma grande relação, a qual provavelmente precisará ser armazenada em disco acesso a disco para ler as relações empregado, trabalha e projeto para ler e escrever resultados intermediários objetivo reduzir o tamanho dos resultados intermediários
17 Conversão da Árvore de Consulta π E.último_nome árvore de consulta 2 σ P.nro_projeto=T.nro_projeto σ E.nro_empregado=T.nro_empregado σ P.nome_projeto= arquivo X E P T Heurística: executar as operações de seleção tão cedo quanto possível
18 Conversão da Árvore de Consulta π E.último_nome árvore de consulta 3 σ E.nro_empregado=T.nro_empregado σ P.nro_projeto=T.nro_projeto E P σ P.nome_projeto= arquivo X T Heurística: diminuir os tamanhos das relações a serem utilizadas no produto cartesiano
19 Conversão da Árvore de Consulta árvore de consulta 4 π E.último_nome E.nro_empregado=T.nro_empregado σ P.nome_projeto= arquivo X P P.nro_projeto=T.nro_projeto T E Heurística: substituir operações de produto cartesiano seguidas pelos respectivos critérios de seleção por operações de junção
20 Conversão da Árvore de Consulta π E.último_nome árvore de consulta 5 E.nro_empregado=T.nro_empregado π T.nro_empregado π E.nro_empregado, E.último_nome P.nro_projeto=T.nro_projeto E π P.nro_projeto π T.nro_projeto, T.nro_empregado σ P.nome_projeto= arquivo X P T Heurística: executar as operações de projeção tão cedo quanto possível
21 Observação Diversos atributos de um esquema podem ser geralmente eliminados Atributos que não podem ser eliminados aqueles que aparecem no resultado de uma consulta aqueles que são necessários para processar operações subsequentes
22 Heurísticas Básicas Aplicar primeiro as operações que reduzem o tamanho dos resultados intermediários operações de seleção reduzem o número de tuplas operações de projeção reduzem o número de atributos Aplicar primeiro as operações de seleção e de junção mais restritivas reordenar os nós folha da árvore de consulta evitar a operação de produto cartesiano ajustar o restante da árvore de forma apropriada
23 Custo de Consultas (Fase 2) Estratégia a ser escolhida depende do tamanho de cada relação da distribuição de valores dentro de colunas custo Objetivo estimar o tamanho do resultado (número de tuplas a serem retornadas) e o custo da consulta
24 Otimização de Consultas Características baseada no Custo utiliza técnicas de otimização tradicionais que percorrem o espaço solução para um problema identifica uma solução que minimiza uma determinada função custo depende de estatísticas armazenadas pelo SGBD sobre as relações e sobre os índices
25 Componentes da Função Custo Custo de acesso à memória secundária custo para buscar, ler e escrever blocos de dados que residem em disco Custo de armazenamento custo para armazenar quaisquer arquivos intermediários gerados pela estratégia de execução da consulta Custo de computação custo para a realização de operações em memória principal (i.e., buffers)
26 Componentes da Função Custo Custo do uso da memória custo relacionado ao número de buffers de memória principal necessários durante a execução da consulta Custo de comunicação custo de transmitir uma consulta e os seus resultados do site do banco de dados até o site ou terminar na qual a consulta foi originada
27 Componentes da Função Custo Característica Ênfase BD volumosos BD pequenos BD distribuídos minimizar o custo de acesso à memória secundária minimizar o custo de computação minimizar também o custo de comunicação Problema NP-Completo a grande maioria das funções custo enfoca apenas um único fator: custo de acessos à memória secundária (i.e., disco)
28 Estatísticas Para cada relação r: número de registros b: número de blocos que contêm os registros R: tamanho de um registro em bytes bfr: número de registros que cabe em um bloco d: número de valores distintos para um atributo sl: fração de registros que satisfazem à condição de igualdade no atributo
29 Para cada relação Estatísticas s: número médio de registros que satisfazem à condição de igualdade no atributo se o atributo é chave primária então s = 1 senão s = (r/d) // d valores distintos distribuídos // uniformemente s: cardinalidade de seleção de um atributo
30 Para cada índice Estatísticas f: fan-out médio dos nós internos para índices estruturados em árvore x: número de níveis para uma árvore balanceada: x = [ log f d] para um índice hash: x = 1 b I1 : número de blocos no nível de folha
31 Estatísticas Armazenadas Atualização não é realizada a cada atualização do item de dado em questão geralmente é realizada somente em baixas cargas Consequências as estatísticas podem não ser completamente precisas o otimizador pode não escolher a melhor estratégia para a otimização da consulta
32 Estruturas de Acesso Têm importância significativa na escolha de uma estratégia de processamento de consulta Exemplo: operação de seleção pesquisa sequencial pesquisa binária função hash árvore B + índices sobre atributos-chave e índices sobre atributos não-chave
33 Estruturas de Acesso Exemplo: operação de junção junção de laço aninhado junção de laço aninhado em blocos junção de laço aninhado indexado merge-join hash-join A geração de expressões é apenas parte do processo de otimização de consultas. Cada operação na expressão pode ser implementada com diferentes algoritmos. Uma estratégia de consulta define exatamente que algoritmo é utilizado para cada operação e como a execução das operações é coordenada.
34 Exemplo classificar para remover duplicatas π E.último_nome árvore de consulta 6 hash-join E.nro_empregado=T.nro_empregado π T.nro_empregado π E.nro_empregado, E.último_nome merge-join P.nro_projeto=T.nro_projeto E π P.nro_projeto σ P.nome_projeto= arquivo X P use o índice 1 π T.nro_projeto, T.nro_empregado T estratégia de consulta: conversão da árvore de consulta + algoritmos a serem aplicados
35 Materialização versus Pipelining Materialização o resultado de uma operação é armazenado em disco como uma relação temporária a relação temporária é lida do disco para ser utilizada como entrada para a próxima operação Pipelining combina diversos algoritmos que correspondem às operações individuais utiliza como entrada de uma operação as tuplas que foram geradas pela operação anterior
36 Materialização versus Pipelining Pipelining combina diversos algoritmos que correspondem a operações individuais utiliza como entrada de uma operação as tuplas que foram geradas pela operação anterior