Otimização de Consultas em SQL Estimativas de Custos

Slides:



Advertisements
Apresentações semelhantes
FABAN- UNIESP 2009 Prof. Carlos Alberto Seixas
Advertisements

SISTEMAS DE INFORMAÇÃO
Sistema Gerenciador de Banco de Dados SGBD
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 Disco e de Buffer - Resumo
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
Organização de Arquivos Introdução
Algoritmos para Operação de Junção
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Organização de Arquivos Tipos de Indices Cálculo de Custos de I/O
Algoritmos de Junção – Sort-Merge Join Hash Join
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
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
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
Algoritmos para Operação de Junção AULA 17 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
SQL – DML Consultas envolvendo relacionamentos entre tabelas
Algoritmos para Operação de Junção Loops Aninhados
Introdução a Banco de Dados com exercícios de aplicação
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
Cálculo de Custos de I/O Heap Files AULA 4 Profa. Sandra de Amo Gerenciamento de Banco de Dados – BCC.
Arquivos Estruturados por Ordenação– Custos I/O AULA 5 Profa. Sandra de Amo GBC053 – BCC.
Banco de Dados II Prof. Antônio Cordeiro.
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
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
Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join
sintonia de banco de dados
Algoritmos de Processamento e Otimização de Consultas
Desenvolvendo um script SQL
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Banco de dados.
Query processing in main memory Vitor Silva. Bibliografia “Query Processing in Main Memory Database Management Systems” - Tobin J. Lehman & Michael J.
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
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.
Banco de Dados I I Comandos SQL
Otimização de Consultas em SQL Comparação: Joins em pipeline versus Joins materializados AULA 26 – Parte I Profa. Sandra de Amo GBC053 – BCC.
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.
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 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.
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Transcrição da apresentação:

Otimização de Consultas em SQL Estimativas de Custos AULA 25 Profa. Sandra de Amo GBC053 – BCC 2013-1

Catálogo do Sistema Informações armazenadas no catálogo, necessárias no processo de otimização: Informações gerais: Tamanho do buffer pool (espaço livre) Tamanho de uma página em disco Informações sobre as tabelas Informações sobre índices Informações sobre visões Estatísticas sobre tabelas e indices: atualizadas periodicamente Informações sobre usuários: contas, autorizações de acesso (escrita, leitura), etc. Alguns SGBDs mais sofisticados: Histogramas sobre a distribuição dos valores de cada atributo. A partir destas informações é possivel ter informação mais acurada sobre o tamanho dos resultados de uma operação, sobre a seletividade de um método de acesso, etc.

Informações sobre tabelas, índices e visões Nome da tabela, nome ou identificador do arquivo, estrutura de arquivo (heap, ordenado, hash) Nome e tipo de cada atributo Nome dos índices existentes para cada tabela As restrições de integridade (chaves primárias, chaves candidatas, chaves estrangeiras, etc) para cada tabela Indices O nome do índice e sua estrutura (hash, b+tree) A chave do índice Visões Nome da visão e sua definição (o código da consulta SQL que a define)

Como o catálogo é armazenado : Coleção de Tabelas Exemplo Sailors(sid:integer, sname:string, rating:integer, age:real) Reservas(sid:integer, bid:integer, day:dates, rname:string) Tabela do catálogo: Attribute_Cat(atname:string, relname:string, type:string, position:integer) Catálogo pode ser consultado usando SQL ! Escolha das tabelas do catálogo e seus esquemas depende do implementador do SGBD.

Uma tabela do catálogo atname relname type position Attribute_Cat string 1 2 3 integer 4 sid Sailors sname rating age real Reservas bid day dates rname

Estatísticas sobre tabelas e indices armazenadas no catálogo: NTuples (R) = Número de tuplas da tabela R NPages(R) = Número de páginas da tabela R NKeys(I) = número de chaves distintas do Indice I INPages(I) = número de páginas do indice I (no caso de B+tree = número de folhas) IHeight(I) = Altura do Indice (no caso de B+tree) ILow(I) = menor valor de chave do indice I IHigh(I) = maior valor de chave do indice I

Plano de Execução Π SELECT S.sname FROM Reservas R, Sailors S WHERE R.sid = S.sid AND R.bid = 100 AND S.rating > 5 Π sname σ bid=100 and rating > 5 sid=sid Reservas Sailors

Complementando o plano: como será implementado ? Π Projeção simples sname σ bid=100 and rating > 5 Scan Simple Nested Loops página a página sid=sid Reservas Sailors (scan) (scan) Tabela externa Tabela interna

Complementando o plano: como será implementado ? Π On-the-fly sname σ bid=100 and rating > 5 On-the-fly Simple Nested Loops página a página sid=sid Reservas Sailors (scan) (scan) Tabela externa Tabela interna

Pipeline versus Tabelas Materializadas Pipeline : resultado de uma operação é transferido para a próxima operação sem a criação de uma tabela em disco. Economia de custos de armazenamento e de leitura posterior Sempre que o algoritmo do operador para o qual é transferido o resultado permitir, a técnica de pipeline é utilizada.

Estimativa de Custos de um Plano de Execução Para cada nó da árvore N da árvore, seja Op(N) a operação associada a N. Tarefas do Estimador de Custos Estimar do custo de Op(N) Estimar o tamanho do resultado de Op(N)

Estimativa do Tamanho do Resultado SELECT <lista de atributos> FROM < lista de relações R1,...,Rk > WHERE <cond1 ^ cond2 ^....^condn> Número máximo de tuplas no resultado = M1.M2....Mk, onde Mi = tamanho de Ri Cláusula WHERE atua como um redutor desta estimativa Cada condição do WHERE tem o seu fator de redução próprio

Fatores de Redução R.A = valor R.A = R.B Fator de redução = 1/NKeys(I), caso exista um indice I com chave A para a relação R Fator de redução = 1/10, caso contrário (ou utiliza-se estatísticas mantidas no catálogo sobre a distribuição dos valores dos atributos) R.A = R.B Fator de redução = 1/Max(NKeys(IA),NKeys(IB)) se existe indices IA e IB com chave A e B respectivamente. Fator de redução = 1/NKeys(I) se somente um dos atributos é chave de um indice I Fator de redução = 1/10 caso contrário.

Fatores de Redução R.A > valor R.A IN (Lista de valores) Fator de redução = (High(I) – valor) / High(I) – Low(I) caso exista um indice I com chave A para a relação R Fator de redução = fração < ½ caso não exista indice ou se o valor não é aritmético R.A IN (Lista de valores) Fator de redução = N*(fator de redução de R.A = valor), onde N = núm. de itens Fator de redução = fração < ½ caso não exista índice ou se o valor não é aritmético.

Fatores de Redução R.A IN (Subconsulta) NOT (Cond) Fator de redução: M/N onde M = tamanho do resultado da Subconsulta N = número de valores do atributo R.A NOT (Cond) Fator de redução: (1 – Fator de Redução(Cond)) Fator de Redução da Projeção = fração equivalente ao tamanho dos atributos que não são eliminados.

Exercícios É possível utilizar a estratégia de pipeline para implementar um duplo join utilizando o algoritmo NLJ/p-p para os dois Joins com o plano linear à esquerda ? C A B SIM

Exercícios É possível utilizar a estratégia de pipeline para implementar um duplo join utilizando o algoritmo NLJ/p-p para os dois Joins com o plano linear à direita ? A B C NÃO