Sumário 1 SQL Embutida 2 Processamento de Consultas

Slides:



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

Otimização de Consultas em SQL Estimativas de Custos
Introdução à Ciência da Computação Linguagens de Programação.
Álgebra Relacional Marcelo Mendes Manaus
Evolução dos SGBD’s (2ª Parte).
Prof.: Bruno Rafael de Oliveira Rodrigues
Seminários de Compiladores
Linguagens relacionais
Manipulação algébrica
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
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.
Gerenciamento de Banco de Dados
Algoritmos para Seleção e Projeção
Algebra relacional nomeada e não-nomeada
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
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
Subconsultas ou Consultas Aninhadas
SQL – Consultas Básicas
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Arquivos Seqüenciais Inhaúma Neves Ferraz
Modelo Relacional parte 1
SQL – DML Consultas envolvendo relacionamentos entre tabelas
SQL – DML Consulta a dados de uma tabela
Conceitos Básicos Dado: fato do mundo real que está registrado e possui um significado implícito no contexto de um domínio de aplicação Exemplos: endereço,
Using Concept Hierarchies in Knowledge Discovery
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
Colégio da Imaculada Curso Técnico em Informática Álgebra Relacional
A área de banco de dados Cristina Paludo Santos –
Introdução a Banco de Dados com exercícios de aplicação
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
Otimização de Consultas em SQL Planos Alternativos AULA 24 Profa. Sandra de Amo GBC053 – BCC
Banco de Dados II Prof. Antônio Cordeiro.
Gramáticas Livres de Contexto
AULA 26 Profa. Sandra de Amo GBC053 – BCC
Otimizador de consultas
Tuning Lílian Simão Oliveira.
Otimização de Consultas em SQL Planos de Execução
Linguagem de programação
sintonia de banco de dados
Algoritmos de Processamento e Otimização de Consultas
Exercícios SGBD - CESPE
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Conceitos Programas Programação Linguagens de Programação SQL.
Geração de Código aula-12-geração-de-código.pdf.
Analise Semântica aula-10-analise-semântica.pdf.
Banco de Dados Aplicado ao Desenvolvimento de Software
Tradução Dirigida por Sintaxe
Bancos de Dados Estrutura e Funcionamento de um SGBD
BD I / Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.
1 24/4/ :29 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
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.
Optimização - 1 Optimização de perguntas 1 Processamento de selecções 2 Processamento de junções 3 Manipulação algébrica.
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
SQL – DML Consultas envolvendo mais de uma tabela
Subconsultas ou Consultas Aninhadas Forma alternativa de especificar consultas envolvendo relacionamentos entre tabelas Otimização –filtragens prévias.
Descoberta em múltiplos níveis conceituais
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
INE 5336 Banco de Dados II Ronaldo S. Mello 2007/2 Horário Atendimento: Quintas-feiras, das 17h30 às 19h UFSC-CTC-INE.
Uma Proposta para Bancos de Dados Categoriais Rafael C. Pinto.
UCSal – Bacharelado em Informática
UCSal – Bacharelado em Informática
LÓGICA DE PROGRAMAÇÃO Curso: Técnico em Informática Professor: Ronaldo Disciplina: Lógica de Programação.
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Transcrição da apresentação:

Sumário 1 SQL Embutida 2 Processamento de Consultas 3 Introdução a Transações 4 Recuperação de Falhas 5 Controle de Concorrência 6 Banco de Dados Distribuído

Processamento de Consultas Extração de informações do BD Consulta SQL adequada para uso humano não adequada para processamento pelo SGBD não descreve uma seqüência de passos (procedimento) a ser seguida não descreve uma estratégia eficiente para a implementação de cada passo no que diz respeito ao acesso a nível físico (arquivos do BD) O SGBD deve se preocupar com este processamento! módulo Processador de Consultas

Módulo Processador de Consultas Objetivo otimização do processamento de uma consulta tradução, transformação e geração de uma estratégia (plano) de execução estratégia de acesso leva em conta algoritmos predefinidos para implementação de passos do processamento e estimativas sobre os dados Vale a pena todo este esforço? Sim! Tx = tempo para definir e executar uma estratégia otimizada de processamento Ty = tempo para executar uma estratégia não-otimizada de processamento Quase sempre: Tx  Ty

Etapas de Processamento Consulta em linguagem de alto nível (consulta SQL, p. ex.) Tradução Representação interna (árvore algébrica da consulta) Transformação Representação transformada (árvore otimizada algebricamente) Definição do Plano de Execução Plano de Execução (árvore com indicação de estratégias de acesso) Gerador de Código Código de Execução Resultado da Consulta Processador Run-time

Etapas de Processamento Consulta em linguagem de alto nível (consulta SQL, p. ex.) Tradução Representação interna (árvore algébrica da consulta) Transformação Representação transformada (árvore otimizada algebricamente) Definição do Plano de Execução análise léxica - cláusulas SQL e nomes válidos análise sintática - validação da gramática análise semântica - nomes usados de acordo com a estrutura do esquema conversão para uma árvore algébrica da consulta Plano de Execução (árvore com indicação de estratégias de acesso) Gerador de Código Código de Execução Resultado da Consulta Processador Run-time

Árvore (Algébrica) da Consulta Estrutura que representa o mapeamento da consulta para a álgebra relacional uma expressão da álgebra relacional “estendida” pode indicar alguma computação (função agregação, atributo calculado, ...) nodos folha: relações (do BD ou resultados intermediários) nodos internos: operações da álgebra Processamento da árvore nodos internos são executados quando seus operandos estão disponíveis são substituídos pela relação resultante a execução termina quando o nodo raiz é executado

Exemplo de Árvore da Consulta select m.CRM, m.nome, a.número, a.andar from Médicos m, Ambulatórios a where m.especialidade = ‘ortopedia’ and a.andar = 2 and m.número = a.número  m.CRM, m.nome, a.número, a.andar  m.especialidade = ‘ortopedia’  a.andar = 2  m.número = a.número X Médicos Ambulatórios

Etapas de Processamento Consulta em linguagem de alto nível (consulta SQL, p. ex.) Tradução Representação interna (árvore algébrica da consulta) Transformação Representação transformada (árvore otimizada algebricamente) Definição do Plano de Execução definição de uma árvore de consulta equivalente chega ao mesmo resultado processa de forma mais eficiente também chamada de Otimização Algébrica Plano de Execução (árvore com indicação de estratégias de acesso) Gerador de Código Código de Execução Resultado da Consulta Processador Run-time

Exemplo de Árvore Equivalente  m.CRM, m.nome, a.número, a.andar  m.CRM, m.nome, a.número, a.andar  m.número = a.número  m.especialidade = ‘ortopedia’  a.andar = 2  m.número = a.número  X X  m.especialidade = ‘ortopedia’ a.andar = 2 Médicos Ambulatórios Médicos Ambulatórios

Etapas de Processamento Consulta em linguagem de alto nível (consulta SQL, p. ex.) análise de alternativas de definição de estratégias de acesso escolha de algoritmos para implementação de operações existência de índices estimativas sobre os dados (tamanho de tabelas, seletividade, ...) Tradução Representação interna (árvore algébrica da consulta) Transformação Representação transformada (árvore otimizada algebricamente) Definição do Plano de Execução Plano de Execução (árvore com indicação de estratégias de acesso) Gerador de Código Código de Execução Resultado da Consulta Processador Run-time

Exemplo de Plano de Execução  m.CRM, m.nome, a.número, a.andar  m.número = a.número (processamento pipeline) X (loop-aninhado)  m.especialidade = ‘ortopedia’ a.andar = 2 (pesquisa linear) (pesquisa indexada) Médicos Ambulatórios

Etapas de Processamento Consulta em linguagem de alto nível (consulta SQL, p. ex.) Tradução Representação interna (árvore algébrica da consulta) Transformação Representação transformada (árvore otimizada algebricamente) Definição do Plano de Execução Plano de Execução (árvore com indicação de estratégias de acesso) Gerador de Código Código de Execução Resultado da Consulta Processador Run-time

Etapas de Processamento Consulta em linguagem de alto nível (consulta SQL, p. ex.) Tradução Representação interna (árvore algébrica da consulta) Transformação Representação transformada (árvore otimizada algebricamente) Definição do Plano de Execução FOCO: OTIMIZADOR DE CONSULTA Plano de Execução (árvore com indicação de estratégias de acesso) Gerador de Código Código de Execução Resultado da Consulta Processador Run-time

Otimização Algébrica Objetivo do passo de Transformação Base entrada: árvore da consulta inicial saída: árvore da consulta otimizada (pode manter a mesma árvore) Base regras de equivalência algébrica devem ser conhecidas pelo otimizador para que possam ser geradas transformações válidas algoritmo de otimização algébrica indica a ordem de aplicação das regras e de outros processamentos de otimização

Regras de Equivalência 1. Cascata de Seleções c1  c2  ... cn (R)  c1 (c2 (... (cn (R)))) 2. Comutatividade de Seleções c1 (c2 (R))  c2 (c1 (R)) 3. Cascata de Projeções listaAtributos1 (R)  listaAtributos1 (listaAtributos2 (...(listaAtributosN (R)))) - válido em que situação?

Regras de Equivalência 4. Comutatividade de Seleções e Projeções a1, a2 , ..., an (c (R))  c (a1, a2 , ..., an (R)) - válido em que situação? 5. Comutatividade de Operações Produtórias (“X”) R “X” S  S “X” R por “X” entenda-se: X ou X  ou a ordem dos atributos e tuplas do resultado não é relevante

Regras de Equivalência 6. Comutatividade de Seleções e Operações Produtórias (a) c (R “X” S)  (c (R)) “X” S ou (b) c (R “X” S)  (c1 (R)) “X” (c2 (S)) - válidas em que situações? 7. Comutatividade de Projeções e Operações Produtórias (a) listaAtributos1 (R “X” S)  (listaAtributos2 (R)) “X” S ou (b) listaAtributos1 (R “X” S)  (listaAtributos2 (R)) “X” (listaAtributos3 (S))ou (c) listaAtributos1 (R “X” S)  listaAtributos1 ((listaAtributos2 (R)) “X” (listaAtributos3 (S))) - válidas em que situações?

Regras de Equivalência 8. Comutatividade de Operações de Conjunto R  S  S  R e R  S  S  R por quê a “” não é comutativa? 9. Associatividade de Operações Produtórias e de Conjunto (“X”) (R “X” S) “X” T  R “X” (S “X” T) por “X” entenda-se: X ou X  ou ou  ou  por quê a “” não é associativa?

Regras de Equivalência 10. Comutatividade de Seleção e Operações de Conjunto (“”) c (R “” S)  (c (R)) “” (c (S)) por “” entenda-se:  ou  ou  11. Comutatividade de Projeção e União listaAtributos (R  S)  (listaAtributos (R))  (listaAtributos (S)) por quê a “” e a “” não são comutativas?

Regras de Equivalência 12. Fusão de Seleções e Operações Produtórias (a) c (R X S)  R X  = c S ou (b) c (R X S)  R S ou (c) R X  = c S  R S c c - válidas em quais situações?

Algoritmo de Otimização Algébrica Algoritmo de alto (altíssimo!) nível Composto de 6 grandes passos Passo 1 aplicar a regra 1 desmembrar operações de seleção maior flexibilidade para mover seleções Passo 2 aplicar as regras 2, 4, 6 e 10 objetivo mover seleções para níveis inferiores da árvore o máximo possível

Algoritmo de Otimização Algébrica Passo 3 aplicar as regras 5 e 9 mudar de posição sub-árvores envolvidas em operações produtórias objetivos combinar prioritariamente sub-árvores com menor número de dados investigar sub-árvores com seleções mais restritivas evitar produtos cartesianos combinações sem atributos de junção como saber quais as seleções mais restritivas? análise do grau de seletividade de um predicado estatística geralmente mantida no DD

Grau de Seletividade (GS) Definido pela seguinte razão GS = tp(R) / |R|, onde tp(R) é o número de tuplas que satisfazem o predicado em uma relação R e |R| é o número de tuplas em R (GS  [0,1]) GS pequeno ( 0)  seleção mais restritiva Um atributo chave ac possui baixo GS em predicados de igualdade GS(ac) = 1 / |R| Geralmente mantém-se uma estimativa de distribuição uniforme de valores de atributos GS(ai) = (|R| / V(ai)) / |R| = 1 / V(ai), onde V(ai) é o número de valores distintos de ai

Algoritmo de Otimização Algébrica Passo 4 aplicar a regra 12 otimizar operações produtórias Passo 5 aplicar as regras 3, 4, 7 e 11 desmembrar e mover projeções para níveis inferiores da árvore, tanto quanto possível, definindo novas projeções conforme se faça necessário Passo 6 identificar sub-árvores que representem grupos de operações que possam ser executadas por um único algoritmo defina-os uma única vez (uma única sub-árvore) na “árvore”

Passo 6 - Exemplo  r1, s1, s2, t1, t2  r1, s1, s2, t1, t2 X X  r1 = x s1 > y s1 > y  t2 < z  r1 = x s1 > y  t2 < z R S S T R S T

Exercício – Operadores Lógicos Considerando que p1, p2 e p3 são predicados de seleção, explique por quê as leis abaixo são úteis no algoritmo de otimização algébrica Leis de De Morgan (a)  (p1  p2)  ( p1)  ( p2) (b)  (p1  p2)  ( p1)  ( p2) Leis da Distributividade (a) p1  (p2  p3)  (p1  p2)  (p1  p3) (b) p1  (p2  p3)  (p1  p2)  (p1  p3)