Geração de Planos de Execução Planos para Consultas Aninhadas

Slides:



Advertisements
Apresentações semelhantes
Object Query Language - OQL
Advertisements

Otimização de Consultas em SQL Estimativas de Custos
Álgebra Relacional Marcelo Mendes Manaus
SQL Structured Query Language (continuação)
Prof.: Bruno Rafael de Oliveira Rodrigues
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531 – 7555.
AULA 26 Profa. Sandra de Amo GBC053 – BCC
Cálculo de Custos de Operações I/O – Arquivos Ordenados
Otimização de Consultas em SQL Parte II - Planos Alternativos -  Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de.
REVISÃO PARA 3a PROVA Gerência de Banco de Dados
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.
Organização de Arquivos Cálculo de Custos de I/O Arquivos Hashed AULA 7 – Parte I Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção eliminando Duplicatas
Gerenciamento de Banco de Dados
SQL Exercícios de Revisão
Algoritmos de Junção – BNL e IndexNL AULA 16 Profa. Sandra de Amo GBC053 – BCC
AULA 27 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
SQL – Consultas Aninhadas
Algoritmos para Seleção com Condições Gerais AULA 17 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
SQL – Comandos de Agregação
Algoritmos para Seleção Simples
Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operação de Junção – NLJ orientado a tuplas e NLJ orientado a páginas AULA 15 Profa. Sandra de Amo GBC053 – BCC
AULA 23 Profa. Sandra de Amo GBC053 – BCC
SQL – Consultas Aninhadas e Agregação Profa. Sandra de Amo Capitulo 5 – Livro Texto Database Management Systems Ramakrishnan - Gehrke.
Algebra relacional nomeada e não-nomeada
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
Subconsultas ou Consultas Aninhadas
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
SQL – DML Consultas envolvendo relacionamentos entre tabelas
SCC Bancos de Dados e Suas Aplicações
Algoritmos para Operação de Junção Loops Aninhados
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
Otimização de Consultas em SQL Planos Alternativos AULA 24 Profa. Sandra de Amo GBC053 – BCC
Cronograma Formato do Comando SELECT – 1ª Seção Uso de Funções (DATE_FORMAT, DAY, MONTH, NOW, CONCAT, FORMAT, COUNT, AVG, MAX, MIN e FORMAT) AS DISTINCT.
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
sintonia de banco de dados
Algoritmos de Processamento e Otimização de Consultas
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Query processing in main memory Vitor Silva. Bibliografia “Query Processing in Main Memory Database Management Systems” - Tobin J. Lehman & Michael J.
AULA 20 Profa. Sandra de Amo GBC053 – BCC
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.
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
Problemas NP-completos e Programação Dinâmica
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Otimização de Consultas em SQL Comparação: Joins em pipeline versus Joins materializados AULA 26 – Parte I Profa. Sandra de Amo GBC053 – BCC.
1 PicoDBMS: Scaling down Database Techniques for the Smartcard Christophe Bobineau, Luc Bouganin, Philippe Pucheral, Pratick Valduriez Ana Karina de Oliveira.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
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.
Subconsultas ou Consultas Aninhadas Forma alternativa de especificar consultas envolvendo relacionamentos entre tabelas Otimização –filtragens prévias.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Daniel Paulo SQL Módulo I Daniel Paulo
Recuperação de Dados Banco de Dados Carina Farias
UCSal – Bacharelado em Informática
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Transcrição da apresentação:

Geração de Planos de Execução Planos para Consultas Aninhadas AULA 29 Profa. Sandra de Amo GBC053 – BCC 2013-1

Consultas com uma única relação no FROM Quando não se tem nenhum índice nos atributos aparecendo no WHERE SCAN para selecionar as tuplas satisfazendo a condição do WHERE Ao mesmo tempo (on the fly) aplica-se a projeção nos atributos do SELECT Grava-se o resultado Ordena-se o resultado para implementar o GROUP BY e eliminar duplicatas (caso for solicitado na consulta – DISTINCT)

Consultas com uma única relação no FROM Quando se tem índices nos atributos aparecendo no WHERE (em FNC) Gera plano(s) utilizando o(s) índice(s) referente(s) ao(s) atributo(s) com maior fator de redução. Gera plano(s) utilizando os indices para cada atributo que os tenha, ordena os rids por page ids e faz-se a intersecção dos pages ids Projeções são executadas on the fly. Em caso de Group By (ou de DISTINCT) : grava-se o resultado obtido após a seleção, ordena-se as tuplas e executa o agrupamento, eliminando-se duplicatas se for o caso.

Consultas com várias relações no FROM Só considera os planos com profundidade à esquerda.

Planos de execução para múltiplos “Join” A B C D PLANO POR PROFUNDIDADE À ESQUERDA D B C D A D PLANO BUSHY C C A B A B PLANOS LINEARES

Planos por profundidade à esquerda São os únicos a serem considerados: Quanto maior o número de joins maior o número de planos alternativos. Por isto opta-se por considerar somente os left-deep. Planos left-deep permitem utilizar estratégia pipeline à esquerda com a relação externa. A relação interna é sempre uma relação de base (materializada). Repare que não é possível utilizar pipeline à direita de um join. É sempre necessário que a relação interna esteja disponível em sua integralidade, pois é varrida diversas vezes. No caso de planos left-deep, este problema não acontece, pois o filho à direita de um Join é sempre uma relação de base (materializada).

Enumeração dos planos com profundidade à esquerda Passo 1: Enumera-se todos os planos de 1 única relação Ri, considerando-se todas as possíveis seleções sobre atributos de Ri que podem ser feitas antes dos Join, além de projeções de atributos não mencionados no SELECT ou nos Joins ou no restante dos atributos do WHERE que não foram “empurrados”para dentro do Join. Escolhe-se os melhores planos de 1 única relação. Passo 2: Gera-se todos os planos de 2 relações, considerando-se todas as combinações de planos obtidos no passo 1 Sempre que o algoritmo do JOIN permitir, a relação externa não é materializada, e o JOIN é executado em pipeline Caso o método de JOIN é um INDEX NESTED LOOP JOIN, considera-se planos para a relação interna que não envolvam indices em atributos diferentes do atributo de junção. Escolhe-se os melhores planos de 2 relações. Passo 3: Gera-se todos os planos com 3 relações, combinando-se cada plano otimal obtido no passo 2 com cada plano otimal obtido no Passo 1. Passo 4: assim por diante…

Planos para Consultas Aninhadas SELECT S.sname FROM Sailors S WHERE S.rating = (SELECT MAX (S2.rating) FROM Sailors S2) Subconsulta interna: SELECT MAX (S2.rating) FROM Sailors S2 Executada uma única vez, produzindo um número X WHERE S.rating = X

Planos para Consultas Aninhadas SELECT S.sname FROM Sailors S WHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE R.bid = 103) Estratégia de execução comum Subconsulta interna é avaliada e materializada (T) Faz-se um Join Sailors = relação externa T = relação interna (subconsulta sempre é relação interna) Alguns SGBDs têm estratégias mais sofisticadas: Pode tranformar T em relação externa do Join e Sailors na interna, caso for mais vantajoso, por exemplo, se Sailors possui indice Hash no atributo sid

Planos para Consultas Aninhadas SELECT S.sname FROM Sailors S WHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE R.bid = 103) O Plano de execução canônico para esta consulta é o mesmo plano (otimizado) produzido pelo otimizador para a consulta: FROM Reservas R, Sailors S WHERE R.Sid = S.Sid AND R.bid = 103) Um bom programador pode “guiar” o otimizador, dirigindo-o para o melhor plano de execução. Um bom programador pode forçar o otimizador a produzir um plano que não seria produzido automaticamente.

Tratamento de Consultas Aninhadas Correlatas SELECT S.sname FROM Sailors S WHERE EXISTS (SELECT * FROM Reserves R WHERE R.bid = 103 AND S.sid = R.sid) Consulta externa e interna são correlatas: atributo sid da externa aparece na consulta interna. Não é possível avaliar a consulta interna uma única vez. Estratégia típica de execução: consulta interna é calculada para cada tupla de S

Aninhadas versus não-aninhadas Uma consulta aninhada frequentemente é equivalente a uma não aninhada. Consultas aninhadas correlatas frequentemente têm uma versão sem correlação. Um otimizador tipico é capaz de encontrar um bom plano de execução se dispõe de uma versão não-aninhada ou sem correlações. Boa parte dos otimizadores não são capazes de transformar consultas aninhadas em não aninhadas ou de eliminar correlações. Assim, fica a cargo do programador formular a consulta de modo a evitar aninhamentos e/ou correlações.

Boa Prova Final e Boas Férias !!! FIM Boa Prova Final e Boas Férias !!!