Processamento e Otimização de Consultas

Documentos relacionados
MATA60 BANCO DE DADOS Aula: Otimização. Prof. Daniela Barreiro Claro

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

Processamento e Otimização de Consultas. Msc. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 2 Consultas Aninhaas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

A Linguagem SQL. Introdução a Banco de Dados DCC 011

GBC043 - Sistemas de Banco de Dados SQL/DML no PostgreSQL. Ilmério Reis da Silva ilmerio@facom.ufu.br UFU/FACOM/BCC

Sumário. Etapas do Processamento de Consultas

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Bases de Dados BDDAD. Linguagem SQL. Comando SELECT Divisão Algébrica. Nelson Freire (ISEP LEI-BDDAD 2015/16) 1/9

Álgebra e cálculo relacional. Andre Noel

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

GBC043 Sistemas de Banco de Dados Álgebra e Cálculo Relacional. Ilmério Reis da Silva UFU/FACOM

Processamento e Otimização de Consultas

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Banco de Dados Prof. Célio R. Castelano Página 1 de 9. Álgebra Relacional

Banco de Dados I Módulo III: Linguagens de Consulta. (Aula 1) Clodis Boscarioli

Álgebra Relacional e SQL

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

ÁLGEBRA E CÁLCULO RELACIONAL

Principais Desafios dos SGBDDs. Processamento Distribuído de Consultas. Processamento de Consultas. Componentes do Processamento de Consultas

SQL-99: Esquema de BD EMPRESA

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Rápida revisão do Modelo Relacional

- SQL Linguagem de Manipulação de Dados

Universidade Veiga de Almeida

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

PROCESSAMENTO DE CONSULTAS EM BANCOS DE DADOS DE DIFERENTES TECNOLOGIAS

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

ALGEBRA RELACIONAL. Álgebra Relacional Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

O Modelo e a Álgebra Relacional

ANÁLISE E PROJETO DE BANCO DE DADOS

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Álgebra Relacional. Introdução. Introdução. Álgebra Relacional

Aula 8 BD1 Álgebra Relacional. Profa. Elaine Faria UFU

GES013 Sistema de Banco de Dados. Modelo Relacional (R) Ilmério Reis da Silva ilmerio arroba ufu.br UFU/FACOM

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Subconsulta na Cláusula FROM

Subconsultas ou Consultas Aninhadas

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

SQL DML. Frederico D. Bortoloti

GBC043 Sistemas de Banco de Dados. Modelo Relacional (R) Ilmério Reis da Silva UFU/FACOM

Álgebra Relacional e Cálculo Relacional

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Subconsultas ou Consultas Aninhadas

Transcrição:

Processamento e Otimização de Consultas Processo de Execução de uma Consulta 1

Otimização de Consultas SQL Em algumas linguagens de consulta, a estratégia de execução é definida pela maneira como o usuário (ou programador) expressa a consulta Em SQL, que é uma linguagem declarativa, apenas os resultados desejados são especificados Portanto, a otimização de consultas é necessária em SGBDs relacionais baseados em SQL Otimização de Consultas SQL Passos principais Tradução da consulta SQL para a álgebra relacional Otimização do resultado Estratégias de otimização Otimização baseada em heurísticas Otimização baseada na estimativa de custo da consulta Otimização semântica 2

Tradução de Consultas SQL para Expressões da AR Consultas SQL são decompostas em blocos Cada bloco é transformado em uma expressão da álgebra relacional Os blocos são otimizados internamente, levandose em consideração a ordem de execução entre eles Um bloco contém um único comando SELECT- FROM-WHERE, incluindo cláusulas GROUP BY e HAVING, se houver Exemplo de Tradução de uma Consulta SQL SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > ( SELECT MAX (SALARY) FROM EMPLOYEE WHERE DNO = 5); SELECT FROM WHERE LNAME, FNAME EMPLOYEE SALARY > C SELECT MAX (SALARY) FROM EMPLOYEE WHERE DNO = 5 π LNAME, FNAME (σ SALARY>C (EMPLOYEE)) F MAX SALARY (σ DNO=5 (EMPLOYEE)) 3

Otimização Baseada em Heurísticas Consultas são representadas internamente na forma de uma árvore ou grafo Árvores de consulta são preferidas para a otimização pois determinam a ordem de execução das operações Grafos de consulta indicam apenas as operações e os respectivos operandos envolvidos portanto, existe apenas um grafo correspondente a cada consulta Regras heurísticas são usadas para alterar a representação interna (árvore ou grafo) de uma consulta de modo a otimizar a sua execução Por exemplo: operações de projeção e seleção são aplicadas antes de uma junção O plano de execução gerado determina a ordem em que as operações serão executadas e os recursos a serem utilizados (por ex., índices) Exemplo Preliminar Consulta Q2 (Cap. 5 e 8): Para cada projeto localizado em Stafford, recupere o número do projeto, o número do departamento responsável e o último nome, o endereço e a data de nascimento do gerente do departamento. Consulta SQL: SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION= STAFFORD ; Álgebra Relacional: π PNUMBER, DNUM, LNAME, ADDRESS, BDATE (((σ PLOCATION= STAFFORD (PROJECT)) DNUM=DNUMBER (DEPARTMENT)) MGRSSN=SSN (EMPLOYEE)) 4

Árvore de Consulta π PNUMBER, DNUM, LNAME, ADDRESS, BDATE (((σ PLOCATION= STAFFORD (PROJECT)) DNUM=DNUMBER (DEPARTMENT)) MGRSSN=SSN (EMPLOYEE)) Árvore Canônica SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION= STAFFORD ; 5

Otimização Heurística Parte de uma árvore canônica, obviamente ineficiente, mas fácil de ser construída No exemplo anterior, considerando-se que P tem 100 tuplas de 100 bytes D tem 20 tuplas de 50 bytes E tem 5000 tuplas de 150 bytes os produtos cartesianos resultariam em 10 milhões de tuplas de 300 bytes cada Transformações a partir da árvore canônica usam regras de equivalência entre expressões da álgebra relacional para melhorar progressivamente o plano de execução da consulta Exemplo Consulta SQL: SELECT LNAME FROM EMPLOYEE, WORKS_ON, PROJECT WHERE PNAME = AQUARIUS AND PNUMBER=PNO AND ESSN=SSN AND BDATE > DEC-31-1957 ; Álgebra Relacional (Expressão Canônica): π LNAME (σ PNAME= AQUARIUS AND PNUMBER=PNO AND ESSN=SSN AND BDATE> DEC-31-1957 (EMPLOYEE WORKS_ON PROJECT)) 6

Exemplo: etapa 1 A árvore canônica é construída diretamente a partir da consulta SQL Exemplo: etapa 2 A condição de seleção é desmembrada e as duas operações de seleção (sobre BDATE e PNAME) são aplicadas antes dos produtos cartesianos, para reduzir o número de tuplas resultantes 7

Exemplo: etapa 3 As posições das relações EMPLOYEE e PROJECT são trocadas para que a condição de seleção mais restritiva (PNAME= Aquarius ) seja executada primeiro Exemplo: etapa 4 Produtos cartesianos seguidos de seleção são substituídos por junções 8

Exemplo: etapa 5 A cada passo, são mantidas apenas os atributos necessários (operações de projeção são deslocadas para baixo) Regras de Transformação R1. Cascata de seleções: σ <cond1 E cond2 E... E condn> (R) = σ <cond1> (σ <cond2> (... σ <condn> (R)) R2. Comutatividade de seleções: σ <cond1> (σ <cond2> (R)) = σ <cond2> (σ <cond1> (R)) R3. Cascata de projeções: π <lista1> (π <lista2> (R)) = π <lista1> (R) R4. Comutatividade da seleção e projeção π <lista> (σ <cond> (R)) = σ <cond> (π <lista> (R)) 9

Regras de Transformação (cont.) R5. Comutatividade da junção e do produto cartesiano R S = S R R S = S R R6. Comutatividade da seleção e junção ou produto cartesiano (θ = {, }) σ <cond> (R θ S) = (σ <cond> (R)) θ S R7. Comutatividade da projeção e junção ou produto cartesiano (θ = {, }) π <lista> (R θ S) = (π <listar> (R)) θ (π <listas> (S)) R8. Comutatividade da união e da interseção R S = S R R S = S R Regras de Transformação (cont.) R9. Associatividade da junção, produto cartesiano, união e interseção (θ = {,,, }) (R θ S) θ T = R θ (S θ T) R10. Comutatividade da seleção e das operações de conjunto (união, interseção e diferença) σ <cond> (R θ S) = σ <cond> (R) θ σ <cond> (S) R11. Comutatividade da projeção e união π <lista> (R S) = π <lista> (R) π <lista> (S) R12. Conversão da sequência seleção/produto cartesiano em junção σ c (R S) = R c A 10

Passos para Otimização de uma Árvore Canônica do Tipo SPJ 1. Usando a regra R1, desmembre a condição (conjuntiva) da operação de seleção. 2. Usando as regras R2 e R6, reposicione as condições de seleção e junção de forma que elas possam ser aplicadas o mais cedo possível. 3. Usando as regras R5 e R9, reposicione as relações de forma que condições de seleção mais restritivas possam ser aplicadas mais cedo. 4. Usando a regra R12, converta as sequências de operações de seleção e produto cartesiano em junções. 5. Usando as regras R3, R4 e R7, desmembre a lista de atributos da operação de projeção de forma que operações de projeção específicas possam ser executadas mais cedo. Exercício Seja o banco de dados de uma livraria representado pelo seguinte esquema relacional: Editora(CodEditora,NomeEditora) Livro(CodLivro,Titulo,Autor,Assunto,AnoPub,CodEditora) Instituicao(CodInst,NomeInst,Sigla,Local) Adotado-por(CodLivro,CodInst,AnoAdocao) Dada a consulta SQL SELECT NomeInst FROM Instituicao WHERE CodInst IN (SELECT CodInst FROM Adotado-por WHERE AnoAdocao = 2007 AND CodLivro IN (SELECT CodLivro FROM Livro WHERE Assunto = Portugues AND CodEditora IN (SELECT CodEditora FROM Editora WHERE NomeEditora = Editora Campus ))) reescreva-a de forma não-aninhada, gere a sua árvore canônica e, usando as regras de transformação, derive a árvore de consulta que corresponda à sequência de operações da álgebra relacional mais eficiente para a sua execução. 11