Algoritmos de Processamento e Otimização de Consultas

Slides:



Advertisements
Apresentações semelhantes
gerador de código intermediário
Advertisements

Otimização de Consultas em SQL Estimativas de Custos
Estruturas de Dados Marcio Gonçalves.
Álgebra Relacional Marcelo Mendes Manaus
WebDesign Redes de Computadores Aula 07
Indexação Automática de Documentos
Resumo 1.1) Introdução 1.2) Abordagem Convencional de Arquivos
Prof.: Bruno Rafael de Oliveira Rodrigues
SISTEMAS DE INFORMAÇÃO
Hash Extensivel Rápido acesso a dados com um custo mínimo de processamento (overhead cost).
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Algoritmos para Projeção eliminando Duplicatas
Gerenciamento de Banco de Dados
Algoritmos para Seleção e Projeção
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Árvore Binária de Busca
CISC e RISC.
Pesquisa em Memória Primária
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
INTRODUÇÃO À PROGRAMAÇÃO
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Softwares.
Material III-Bimestre Wagner Santos C. de Jesus
Sistemas Operacionais Turmas MBI1 e NBI2. Prof: Marcelo Mendes.
Processadores – Aula 3 Professor: André Luis Meneses Silva
PROGRAMAÇÃO I UNIDADE 1.
4/1/2017 Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco.
Processamento Distribuído de Consultas
Geração de Planos de Execução Planos para Consultas Aninhadas
Banco de Dados II Prof. Antônio Cordeiro.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Desenvolvimento de Jogos e Entretenimento Digital
Otimizador de consultas
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Tuning Lílian Simão Oliveira.
INTRODUÇÃO ÁS BASES DE DADOS
Otimização de Consultas em SQL Planos de Execução
sintonia de banco de dados
Exercícios SGBD - CESPE
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Análise Léxica.
Geração de Código aula-12-geração-de-código.pdf.
Sistemas Operacionais
Capítulo VIII Ambientes de Execução
A abordagem de banco de dados para gerenciamento de dados
Bancos de Dados Estrutura e Funcionamento de um SGBD
Back-End Compilação aula-11-back-end.pdf.
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
BD I / Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.
Fundamentos de linguagens de programação
1 24/4/ :29 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
AULA 21 Profa. Sandra de Amo BCC - UFU
Algoritmos de Junção – IndexNL e Sort Merge Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.
Algoritmos para o operador de Projeção AULA 19 – Parte II Profa. Sandra de Amo GBC053 – BCC.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
Gerenciamento de Memória Sistemas Recentes
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
SISTEMAS DE INFORMAÇÃO
Sistemas Operacionais IV – Gerenciamento de E/S
Marcos Corrêa Neves Gilberto Câmara Renato M. Assunção
Sistemas de Arquivos. Alocação em memória – Problemas Quantidade Limitada de Informações Perda de informações quando o processo é terminado Vários processos.
Métodos de Ordenação Externa
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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.

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