32
Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

Embed Size (px)

Citation preview

Page 1: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

Algoritmos de Processamento e Otimização de Consultas

Adriano Douglas GirardelloAna Paula Fredrich

Tiago Alexandre Schulz Sippert

Page 2: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

1 Introdução

Este trabalho aborda as técnicas utilizadas por um Sistema Gerenciador de Banco de Dados para processar, otimizar e executar consultas

de alto nível

Page 3: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

2 Passos do Processamento de uma Consulta

Análise Léxica Análise Sintática Validação das análises Otimizador de Consulta Gerador de código Processador em tempo de execução

Pode ser gerado erro nesta etapa

Page 4: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

2 Passos do Processamento de uma Consulta: Quatro Estágios

Moldar a Consulta em Alguma Forma Interna Converter para a Forma Canônica Escolher Procedimentos Candidatos de Baixo

Nível Gerar Planos de Consultas e Escolher o mais Econômico

Page 5: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

2.1 Moldar a Consulta em Alguma Forma Interna

Conversão da consulta original para manipulação pela máquina, eliminando peculiaridades

Podem ser escolhidas Árvore de Sintaxe Abstrata Árvore de Consulta

Em geral é escolhida álgebra relacional

Page 6: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

2.2 Converter para a Forma Canônica

Otimizações não referentes aos valores dos dados ou aos acessos físicos

Regras de transformação Várias formas de escrita de uma consulta Converter a representação original para uma

mais eficiente

Page 7: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

2.3 Escolher Procedimentos Candidatos de Baixo Nível

Como executar a consulta Levar em consideração

Existência de índices, caminhos de acesso Agrupamento físico, distribuição dos valores

Para cada operação de baixo nível existem vários procedimentos implementados

Cada procedimento tem a fórmula de custo O otimizador escolhe qual procedimento

implementar para cada operação de baixo nível

Page 8: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

2.4 Gerar Planos de Consultas e Escolher o mais Econômico

Elaborado um conjunto de planos de consulta Escolhido o melhor desses planos Muitos planos candidatos Tarefa de escolha demorada Limite de planos gerados Atribuição de peso de execução (soma dos

custos individuais) Avaliação dos resultados individuais

Page 9: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

3 Traduzindo Consultas SQL para Álgebra Relacional

Linguagem SQL utilizada na maioria dos bancos comerciais

Cada consulta SQL é composta de blocos de consultas, que formam as unidades básicas

Unidade básica é transformada e otimizada

Page 10: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

4 Algoritmo para Ordenação Externa

Ordenação é um dos algoritmos principais Utilizado quando ocorre ORDER BY Também utilizado em:

JOIN UNION INTERSECTION PROJECT

Adequada para registros grandes que não cabem totalmente em memória

Page 11: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

4 Algoritmo para Ordenação Externa

Utiliza ordenação sort-merge Ordena primeiramente sub-arquivos Após faz a fusão nos sub-arquivos Exige espaço de buffer na memória

Page 12: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.1 Implementação da Operação SELECT

Várias opções de implementação Podem ser divididos em:

Métodos de busca para seleção simples Métodos de busca para seleções complexas

O otimizador deve escolher o método apropriado para cada operação SELECT

Escolha do método com o menor custo estimado

Page 13: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.1.1 Métodos de Busca para Seleções Simples

S1 Busca Linear: Força Bruta S2 Busca Binária S3 Utilização de Índice Primário: Chave Hash S4 Utilização de Índice Primário para

Recuperar Registros Múltiplos S5 Utilização de um Índice Cluster para

Recuperação de Múltiplos Registros S6 Utilização de um Índice Secundário em uma

Comparação de Igualdade

Page 14: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.1.2 Métodos de Busca para Seleções Complexas

S7 Seleção Conjuntiva Utilizando um Índice Individual

S8 Seleção Conjuntiva Utilizando um Índice Composto

S9 Seleção Conjuntiva por Meio da Integração de Registros

Page 15: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.1 Implementação da Operação SELECT

Se existir caminho de acesso direto O método correspondente é utilizado

Se não existir caminho É utilizado força bruta para escolha

Otimizar consultas de seleção conjuntiva (AND) Otimizador sempre escolhe a consulta que

retorna o menor número de registros Seleção disjuntiva é muito mais difícil de

otimizar (OR)

Page 16: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.2 Implementação da Operação JOIN

Uma das operações que mais consome tempo de consulta

Possibilidade de duas ou mais vias (dois ou mais arquivos)

O número de maneiras para executar as junções múltiplas aumenta rapidamente

Page 17: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.2.1 Métodos para a Implementação de Junções

J1 Junção de Laços Aninhados J2 Junção de Laço Único J3 Junção Sort-Merge J4 Junção-Hash

Page 18: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

5.2.2 Efeitos da Disponibilidade de Espaço de Buffer

Efeito importante sobre operações de junção Tamanho do buffer

Ler para a memória a quantia máxima de blocos do arquivo Reduz o número de acessos ao disco

Quando o buffer está cheio ele é escrito no disco

Page 19: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

6 Combinação de Operações Usando Pipelines

Cada SQL é traduzida em uma expressão composta de várias operações

Cada operação gera arquivos temporários gerando sobrecarga excessiva

Utilizar códigos de execução correspondentes que realizem uma só consulta

Criar dinamicamente código de execução Conforme resultado é produzido pode ser

utilizado para as próximas operações

Page 20: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

7 Utilização de Heurísticas na Otimização de Consultas

Regras heurísticas para muda representação interna

Otimizado a partir da análise sintática Uma das principais heurísticas é utilizar

SELECT e PROJECT antes de aplicar o JOIN As operações SELECT e PROJECT reduzem o

tamanho do arquivo de entrada para o JOIN

Page 21: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

7.1 Notações de Árvores de Consulta e de Grafos de Consultas

Árvore de consulta: Estrutura de dados de árvore correspondente a

uma expressão algébrica relacional Representa relações de entrada como nós folhas e

operações como nós internos Execução dos nós internos até chegar à raiz No final produz a relação de resultados da

consulta

Page 22: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

7.2 Conversões de Árvores de Consulta em Planos de Execução

de Consultas O plano de execução inclui informações sobre

os métodos de acesso disponíveis para cada relação

Inclui algoritmos a serem utilizados na computação dos operadores

Page 23: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

8 Utilização de Seletividade e Estimativa de Custo na Otimização

de Consultas Otimizador não deve depender somente de

heurísticas Estimar e comparar custos usando diferentes

estratégias Escolher a estratégia com menor custo Estimativas precisas são necessárias Comparação de maneira correta e realista Limitar número de estratégias

Page 24: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

8.1 Componentes do Custo para a Execução de uma Consulta

1. Custo de Acesso ao Armazenamento Secundário

2. Custo de Armazenamento 3. Custo de Computação 4. Custo de Uso de Memória 5. Custo de Comunicação

Page 25: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

9 Otimização Semântica de Consultas

Utilização de restrições no banco de dados para tornar uma consulta mais eficiente

Pode ser utilizada em conjunto com as outras técnicas

Otimizador semântico verifica a existência de restrições. Dependendo das restrições ele modifica a consulta

ou nem a executa Economiza tempo considerável de

processamento

Page 26: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

9 Otimização Semântica de Consultas

Número de restrições X Tempo de execução Pesquisar muitas restrições para ver quais são

aplicadas realmente Bancos de Dados Futuros:

Técnicas de otimização semântica podem ser incorporadas totalmente ao SGBD

Page 27: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

10 Otimização Física

Pode ser dividido em dois discos Permite acessos paralelos Escolha de boa distribuição dos dados Fatiamento de disco:

Divide as tuplas de relações individuais entre os diversos discos

Ligação física ótima difere entre consultas Administrador do BD escolhe melhor ligação

Page 28: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

11 Estatísticas de Bancos de Dados

Utilizado na seleção de caminhos de acesso Uso das chamadas estatísticas no catálogo Listamos estatísticas em dois exemplos:

DB2 Ingres

Tais estatísticas são usadas para entender como o banco é usado e como otimizá-lo

Page 29: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

11.1 Estatísticas do BD2

Para cada tabela básica: Cardinalidade Número de páginas ocupadas por esta tabela Fração de "espaço de tabela" ocupado

Para cada coluna de cada tabela básica: Número de valores distintos nesta coluna Segundo valor mais alto nesta coluna Segundo valor mais baixo nesta coluna Somente para colunas indexadas, os dez valores

que ocorrem com maior freqüência nesta coluna

Page 30: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

11.1 Estatísticas do BD2

Para cada índice: Uma indicação quanto a ser este um "índice de

agrupamento" (isto é, um índice usado para agrupar dados logicamente relacionados em posições fisicamente contíguas no disco).

Se for o caso, a fração da tabela indexada ainda em seqüência de agrupamento em cluster.

Número de páginas por folhas neste índice. Número de níveis neste índice.

Page 31: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

11.2 Estatísticas do Ingres

Para cada tabela básica: Cardinalidade Número de páginas primárias para esta tabela Número de páginas de overflow para esta tabela

Para cada coluna de cada tabela básica: Número de valores distintos nesta coluna Valores máximo, mínimo e médio para esta coluna Valores efetivos nesta coluna e o número de vezes

em que eles ocorrem.

Page 32: Algoritmos de Processamento e Otimização de Consultas Adriano Douglas Girardello Ana Paula Fredrich Tiago Alexandre Schulz Sippert

Conclusões

Existem muitos métodos de otimização Métodos de otimização são importantes:

Reduzem tempo de execução Reduzem custos de processamento Melhoram o desempenho em geral

Existem muitos inibidores ao tentar realizar otimizações no processamento de consultas

Inibidores impedem que o otimizador faça uma consulta tão boa quanto poderia