Bancos de Dados. 15. Processamento e O3mização de Consultas

Documentos relacionados
Tecnologias de Bancos de Dados

Processamento e Otimização de Consultas

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

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

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

Introdução a. π LNAME, FNAME (σ SALARY>C (EMPLOYEE))

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

3 Plano de Execução de Consultas

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

ACH2025. Laboratório de Bases de Dados Aula 15. Processamento de Consultas Parte 2 Otimização. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

ÁLGEBRA E CÁLCULO RELACIONAL

Sumário. Definição do Plano de Execução

Processamento de Consultas. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

Escrita ( W ) do Resultado

Compilação, Otimização e Execução de Consultas. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bases de Dados. Algoritmos. Custo de operação. Algoritmos de selecção. Algoritmo de ordenação. Algoritmos de junção.

Há vários algoritmos para processar junções nested-loop join block nested-loop join indexed nested-loop join merge-join hash-join

Álgebra Relacional e SQL

Processamento de Produtos ( X )

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

ANÁLISE E PROJETO DE BANCO DE DADOS

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

Rápida revisão do Modelo Relacional

Processamento e Otimização de Consultas

- SQL Linguagem de Manipulação de Dados

Processamento de Consultas. Processamento de Consultas. Processamento de Consultas Distribuídas. Otimização de Consultas

Otimização de Consultas Baseada em Custo. Cristina Dutra de Aguiar Ciferri

IEC Banco de Dados I Aula 06 Álgebra Relacional

Banco de Dados. Aula 8 - Prof. Bruno Moreno 16/09/2011

SQL Consultas Básicas

Banco de Dados Notas de Aula Consultas em SQL Prof. Dr. Daniel A. Furtado

Álgebra Relacional e SQL operações de interesse

OTIMIZAÇÃO DE CONSULTAS RELACIONAIS TRABALHO DE PÓS-GRADUAÇÃO

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

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 3 Tabelas de Junção e Funções de Agregação

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador

TABELA ENTIDADE LINHA OCORRÊNCIA DA ENTIDADE COLUNA ATRIBUTO DA ENTIDADE

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

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

OTIMIZAÇÃO DE CONSULTAS - MYSQL. Prof. Antonio Almeida de Barros Junior

Unipar Universidade Paranaense Disciplina: Banco de Dados II 3ª Série Profª: Késsia Marchi Profa. Késsia Marchi

Modelo Relacional - Manipulação

Álgebra e cálculo relacional. Andre Noel

Processamento da Consulta. Processamento da Consulta

Otimização e Execução de Consultas Caso Centralizado Parse Query

SQL-99: Esquema de BD EMPRESA

23/05/12. Agenda. Introdução. Introdução. Introdução. Álgebra. Relacional. Cálculo. Relacional

Introdução. Introdução. Álgebra Relacional. Linguagens formais de Consulta Modelo Relacional. O que foi visto até agora...

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

DCC011 Introdução a Banco de Dados

Bases de Dados. Optimização de planos de execução. Plano de execução

L Q S m e g a u g n Li A

Sumário SELECT + FROM

Bancos de Dados IV. Tuning de Bancos de Dados. Rogério Costa

ANÁLISE E PROJETO DE BANCO DE DADOS

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

Etapa III - Implementação de Operadores da Álgebra Relacional; Etapa IV - Comparação experimental de varredura sequencial x acesso aleatório

Operações da Álgebra Relacional Operadores Especiais da Álgebra Relacional Renomeação

Sintaxe do comando SELECT

de Bases de Dados Exame 1

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 1 Introdução e Consultas Basicas

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Encontro SQL BH. February Otimização de Consultas no SQL Server

de Bases de Dados Exame 2

Introdução a Bancos de Dados

Subconsulta na Cláusula FROM

Ordenação e Busca em Arquivos

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

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

Tornou-se um padrão de fato para aplicações comerciais, devido a sua simplicidade e performance.

Oracle Database 11g: Introdução à Linguagem SQL Novo

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

Oracle Database: Fundamentos de SQL e PL/SQL

t n e z m r A o o d ç a a d B e L s i u e f F s L e

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

INF70 Gerenciamento de Banco de Dados 2 Ordenação Externa. Ilmério Reis da Silva UFU/FACOM/BCC

Modelo de Dados Relacional

Modelo Relacional. Josino Rodrigues

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

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

Um modelo de dados, além de definir estruturas e restrições, deve definir um conjunto de operações para manipular os dados.

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Bases de Dados. Índices. Discos. transferência rápida e aos bytes. transferência lenta e em blocos (512B ~ 4KB) memória. disco BD / aplicação

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai

Modelo de Dados Relacional

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

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

Sumário. Etapas do Processamento de Consultas

INSTRUÇÕES GERAIS AOS CANDIDATOS

Transcrição:

Bancos de Dados 15. Processamento e O3mização de Consultas

Introdução Existe nos SGBDR um módulo conhecido como o3mizador de consultas A expressão o3mização de consultas, embora seja frequentemente u3lizada, é na verdade imprópria, pois em alguns casos a estratégia encontrada não é garan3damente a melhor possível (ó3ma) Encontrar a estratégia ó3ma consumiria muito tempo, e exigiria o uso de informação dinâmica sobre o conteúdo e organização em disco das tabelas Em vez de o3mização de consultas, deveríamos dizer planejamento de execução de consultas

Introdução Em algumas linguagens de consulta, a estratégia está definida na maneira em que o programador implementa a consulta Em SQL, que é uma linguagem declara3va, apenas os resultados desejados são especificados Portanto, a o3mização de consultas é necessária em SGBD relacionais, baseados em SQL

Introdução Passos: Tradução de consultas SQL em álgebra relacional O3mização usando o resultado da tradução Estratégias de o3mização Heurís3cas Baseadas na es3ma3va de custos O3mização semân3ca (recente)

Ferramentas Algoritmos para ordenação em memória secundária Algoritmos para SELECT Algoritmos para JOIN Algoritmos para PROJECT e operações de conjunto Alterna3vas para implementação das operações de agregação e outros 3pos de JOIN (OUTER, LEFT, RIGHT, etc.)

Ordenação Externa A ordenação é um dos principais recursos para o3mização de consultas Usada sempre que aparece ORDER BY Usada para implementar algoritmos SORT-MERGE para processar junções Usada na eliminação de tuplas duplicadas (cláusula DISTINCT, ou em operações de conjuntos) A ordenação pode ser evitada se houver um índice Estratégia usual: SORT-MERGE Dividir a tabela em pedaços que caibam na memória Ordenar cada pedaço e salvar em disco Mesclar os pedaços (à la MergeSort) Vide E&N para a análise de complexidade

Ordenação Externa O tamanho dos buffers de memória disponíveis para o SGBD é importante Tuning: definir um balanceamento para divisão da memória entre Buffers do SGBD e caches de I/O Espaço disponível para o S.O. (paginação, memória virtual) No tuning de I/O e do SGBD, o fator crí3co é a memória principal Se o SGBD usar memória em excesso, tornará o S.O. lento Se usar muito pouca memória, terá seu funcionamento prejudicado Servidores de BD 3picamente são configurados com muita memória, mas ter muitos dados em buffers de memória aguardando a gravação defini3va aumenta a dificuldade das operações de recuperação de falhas

Algoritmos para SELECT Casos gpicos de SELECT OP1: σ CPF= 55590333395 (EMPREGADO) Igualdade, atributo único, possível índice OP2: σ NUMDEP>5 (DEPARTAMENTO) Não igualdade, atributo único, possível índice OP3: σ NUD=5 (EMPREGADO) Igualdade em atributo não-chave OP4: σ (NUD=5 AND SALARIO>3000 AND SEXO=F) (EMPREGADO) Múl3plas condições simultâneas (conjun3vas) OP5: σ CPFE= 55590333395 AND PNO=10 (TRABALHA_EM) Múl3plas condições simultâneas (conjun3vas), com possível índice

SELECT Algoritmos para implementação de SELECT S1. Busca linear (força bruta) S2. Busca binária S3a. Usar um índice primário S3b. Usar uma chave de hash S4. Usar índice primário para recuperar múl3plos resultados S5. Usar índice em cluster S6. Usar um índice secundário (ex. B+-tree) S7a. Usar índice em bitmap S7b. Usar um índice funcional S8. Métodos de busca para seleção conjun3va (índice composto, interseção de índices, índices mul3dimensionais ) S9. Métodos de busca para seleção disjun3va

Algoritmos para SELECT S1. Busca linear (força bruta): recuperar todos os registros no arquivo, testando se os valores atendem ou não à condição de seleção S2. Busca binária: executada sobre o atributo que determina a ordenação do arquivo (ex.: OP1, se CPF for a chave de ordenação do arquivo) S3: Uso de índice primário (ou chave de hashing): executada sobre o atributo que determina a indexação do arquivo. Recupera no máximo um registro (ex.: OP1, se CPF for a chave de indexação)

Algoritmos para SELECT S4. Uso de índice primário para recuperar múl3plos registros: executado se a comparação não for de igualdade mas for sobre um atributo chave de um índice primário (ex.: NUMDEP em OP2) S5. Uso de índice em cluster para recuperar múl3plos registros: executado se a comparação não for de igualdade e for sobre atributo não-chave que possui índice em cluster (ex.: NUD=5 em OP3) S6. Uso de índice secundário (B-tree, B+-tree) sobre comparação de igualdade: usado para recuperar um único registro se o atributo de indexação for chave (valores únicos) ou para recuperar múl3plos registros se o atributo de indexação não for chave

Algoritmos para SELECT S7. Seleção conjun3va usando índice individual: se um atributo envolvido em uma única condição simples em uma cláusula de junção conjun3va possuir um caminho de acesso que permita usar S2 a S6, selecionar com base nesse atributo e checar o atendimento às demais condições em cada registro recuperado S8. Seleção conjun3va usando índice composto: se dois ou mais atributos envolvidos em comparações de igualdade na condição de seleção conjun3va, e um índice composto exis3r para esses atributos, selecionar com base nesses atributos e checar o atendimento às demais condições em cada registro recuperado (ex.: OP5, com índice sobre CPFE e PNO)

Algoritmos para SELECT S9. Seleção conjun3va pela interseção de apontadores de registros: se índices secundários ou outros caminhos de acesso es3verem disponíveis para mais de um dos atributos envolvidos na condição de seleção conjun3va, cada índice pode ser usado para recuperar um conjunto de apontadores para registros que sa3sfazem parcialmente à condição. A interseção entre esses conjuntos indica os registros que devem ser recuperados

Métodos de acesso Exemplo: árvore B+ Clodoveu Davis 16

Ferramentas Es3ma3va da sele3vidade de uma condição Cálculo aproximado do custo de uma operação de seleção Heurís3ca: baseado no 3po do atributo e no operador de comparação Baseado em custos: cálculo apoiado por metadados man3dos pelo SGBD Usado na priorização das condições, quando há várias Condições mais sele)vas são executadas primeiro

N_distinct: se -1, provavelmente valores únicos; se < 1, indica % de registros únicos; se > 1, indica número de valores distintos Clodoveu Davis 18

Ferramentas Algoritmos para implementação de JOIN J1. Loops aninhados J2. Loops aninhados baseados em índice J3. Sort-merge join J4. Par33on-hash join Es3ma3vas do fator de seleção na junção Fração dos registros de uma tabela que serão combinados com registros da outra tabela

Algoritmos para JOIN JOIN é uma das operações mais pesadas no processamento de consultas Serão analisadas aqui apenas EQUIJOINs ou NATURAL JOINs, que são a maioria dos casos (R A=B S) Casos gpicos OP6: EMPREGADO DNO=NUMDEP DEPARTAMENTO OP7: DEPARTAMENTO CPFGER=CPF EMPREGADO

Algoritmos para JOIN J1. Junção usando loop aninhado (força bruta): para cada registro r de R, recuperar todo registro s de S e testar se os dois registros atendem a condição de junção J2. Junção usando loop simples: requer estrutura de acesso para recuperar os registros correspondentes na outra tabela, portanto um dos atributos da condição de junção precisa ser a chave de um índice J3. Junção sort-merge: se os registros de R e de S es3verem fisicamente ordenados pelos atributos A e B, realizar a junção pela varredura simultânea dos dois arquivos (este é o método mais eficiente possível)

Algoritmos para JOIN J4. Hash-join: os registros de R e de S são espalhados no mesmo arquivo de hash, usando a mesma função de hash e tendo os dois atributos, A e B, como chaves Primeira passada: hashing dos registros do arquivo que contém menos registros (R) Segunda passada: varredura simples dos registros do outro arquivo (S), testando o atendimento à condição de junção em todos os registros do bucket correspondente à chave de S

Algoritmos para JOIN Todos os algoritmos devem ser implementados para lidar com blocos de disco inteiros, em vez de registros individuais Há muita influência do tamanho do buffer na memória para executar as operações

Algoritmos para PROJECT e operações de conjunto O PROJECT é de implementação simples se a lista de atributos con3ver uma chave Se não con3ver, é necessário resolver a eliminação de duplicatas A eliminação é feita após uma ordenação, mas também pode ser resolvida usando hashing (como em J7) Operações de conjunto são caras, em par3cular o produto cartesiano A implementação é feita usando variações da técnica sortmerge, ou usando hashing

Algoritmos para Operações de Agregação e Outer Joins Os operadores de agregação podem ser implementados usando uma varredura na tabela ou o percurso de um índice, se disponível Se exis3r índice, o resultado de MIN e MAX pode ser ob3do diretamente O resultado de COUNT pode ser ob3do no índice, sem a necessidade de acessar os registros SUM e AVG podem ser muito simplificados se forem sobre um valor indexado

Algoritmos para Operações de Agregação e Outer Joins Quando existe cláusula GROUP BY, a tabela deve ser par3cionada em subconjuntos de tuplas Isso é feito usando hashing ou ordenando Se exis3r um índice em cluster, esse par3cionamento pode já estar pronto para uso Outer joins são resolvidos usando variações dos algoritmos de join, como J1 ou J2; no caso, o loop externo tem que ser sobre a tabela ligada ao lado do outer join

Tradução de Consultas SQL para AR Consultas SQL são decompostas em blocos Cada bloco é transformado em uma expressão da AR Os blocos são o3mizados internamente e através de decisões sobre a ordem de execução dos blocos Um bloco contém um único comando SELECT-FROM- WHERE, incluindo cláusulas GROUP BY e HAVING, se houver

Tradução de Consultas SQL para AR Exemplo SELECT nome FROM empregado WHERE salario > (SELECT MAX(salario) FROM empregado WHERE numdep = 5) SELECT MAX(salario) FROM empregado WHERE numdep = 5 SELECT nome FROM empregado WHERE salario > c > F MAX(salario) (σ numdep=5 (empregado)) > π nome (σ salario>c (empregado)) /* c = result.consulta anterior

Tradução de Consultas SQL para AR No exemplo, a subconsulta interna precisa ser executada apenas uma vez Subconsulta não correlacionada A ordem ideal é fácil de determinar Subconsultas correlacionadas (em que uma variável de tupla do bloco externo aparece no bloco interno) são bem mais complicadas

Heurís3cas para o3mização de consultas Sequência básica de eventos: O parser da consulta gera uma representação interna inicial A o3mização é realizada de acordo com regras heurís3cas Um plano de execução é construído, de modo a gerar grupos de operações com base nos arquivos e índices envolvidos O plano é repassado ao processador de run3me para escalonamento Em vez das regras heurís3cas, cálculos baseados em um modelo de custos podem ser usados

Árvores e grafos de consulta Árvore de consulta: corresponde a uma expressão em AR Relações de entrada são representadas em folhas Operações são representadas em nós internos A execução consiste em executar as operações assim que os operandos correspondentes es3verem disponíveis, e subs3tuir o nó interno com o resultado (uma relação) O processo termina quando o nó raiz é executado Exemplo: SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT P, DEPARTMENT D, EMPLOYEE E WHERE P.DNUM = D.DNUMBER AND D.SSNMGR = E.SSN AND P.LOCATION= STAFFORD

Árvores e grafos de consulta Grafos de consulta: relações são indicadas em nós, valores constantes são indicados em nós com linhas duplas, e condições de seleção e junção são indicadas nos arcos Grafos de consulta não indicam a ordem de execução, ao contrário das árvores Existe apenas um grafo correspondente a cada consulta Árvores de consulta são preferidas para a o3mização, pois o processamento precisa ter sua ordem definida

O3mização heurís3ca de árvores de consulta Parte de uma árvore canônica, obviamente ineficiente mas fácil de compor No exemplo anterior, considerando: 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 par3r da árvore canônica usam regras de equivalência entre expressões da AR para melhorar progressivamente esse resultado

Exemplo SELECT P.Pnumber, D.Dnum, E.Lname, E.Address, E.Bdate FROM PROJECT P, DEPARTMENT D, EMPLOYEE E WHERE AND AND P.Dnum = D.Dnumber D.Mgr_SSN = E.SSN P.Plocation = Stafford > Para cada projeto situado em Stafford, recuperar o número do projeto, o número do departamento que o controla, e o sobrenome, endereço e data de nascimento de seu gerente. π Pnumber,Dnum,Lname,Address,Bdate (((σ Ploca3on= Stafford (PROJECT) Dnum=Dnumber (DEPARTMENT)) Mgr_ssn=Essn (EMPLOYEE))

Exemplo, etapa 1

Exemplo, etapa 2 Duas seleções (PNAME e BDATE) são aplicadas antes dos produtos cartesianos, para reduzir o número de tuplas resultantes

Exemplo, etapa 3 As posições de EMPLOYEE e PROJECT são trocadas para que a condição de seleção mais restritiva (PNAME=...) seja executada primeiro

Exemplo, etapa 4 Produtos cartesianos seguidos de seleção são substituídos por JOINs

Exemplo, etapa 5 Manter a cada passo apenas os atributos necessários deslocar as operações PROJECT para baixo

O3mização heurís3ca de árvores de consulta As transformações do exemplo são possíveis apenas se forem comprovadamente equivalentes, de modo a não alterar o resultado final Ou seja, a cada passo as árvores de consulta são equivalentes Existem regras gerais de transformação que garantem a equivalência

O3mização heurís3ca de árvores de consulta Regras gerais de transformação R1. Cascata de seleções: σ <cond1 E cond2 E... E condn> (R) = σ <cond1> (σ <cond2> (... σ <condn> (R)) R2. Comuta3vidade de seleções: σ <cond1> (σ <cond2> (R)) = σ <cond2> (σ <cond1> (R)) R3. Cascata de projeções: π <lista 1> (π <lista 2) (R)) = π <lista 1> (R) R4. Comuta3vidade de SELECT e PROJECT π <lista> (σ <cond> (R)) = σ <cond> (π <lista> (R))

O3mização heurís3ca de árvores de consulta Regras gerais de transformação (cont.) R5. Comuta3vidade de JOIN e produto cartesiano R X S = S X R, e (R JOINc S = S JOINc R) R6. Comuta3vidade entre SELECT e JOIN (ou X) σ <cond1> (R JOINc S) = σ <cond1> (R) JOINc S R7. Comuta3vidade entre PROJECT e JOIN (ou X) π <lista> (R JOINc S) = π <listar> (R) JOINc π <listas> (S) Se algum atributo usado em c não es3ver nas listas, acrescentar em ambas R8. Comuta3vidade das operações de união e interseção R9. Associa3vidade de JOIN, X, união e interseção ( Rθ S) θt = Rθ ( SθT )

O3mização heurís3ca de árvores de consulta Regras gerais de transformação (cont.) R10. Comuta3vidade entre SELECT e operações de conjuntos σ <cond> (R θ S) = σ <cond> (R) θ σ <cond> (S) R11. Comuta3vidade entre PROJECT e união π <lista> (R U S) = π <lista> (R) U π <lista> (S) R12. Definição de junção σ <cond> (R X S) = R JOIN cond A

O3mização heurís3ca de árvores de consulta Passos de um algoritmo de o3mização heurís3ca 1. Usando R1, quebrar operações SELECT com condições conjun3vas em uma cascata de SELECTs 2. Usando R2, R4, R6, R10, mover cada SELECT para baixo na árvore tanto quanto possível (dependendo dos atributos envolvidos na condição de seleção) 3. Usando R5, R9 quanto à comuta3vidade e associa3vidade, rearranjar os nós folha de acordo com o seguinte: 3.1 Posicionar os nós folha com condições mais restri3vas para execução mais cedo (produzem menos tuplas, têm o menor tamanho absoluto, ou têm menor sele3vidade) 3.2 Garan3r que a ordenação dos nós folha não provoque a execução de um produto cartesiano (p.ex., as condições mais restri3vas não têm um JOIN em comum, e produzem mais de uma tupla cada)

O3mização heurís3ca de árvores de consulta Algoritmo (cont.) 4. Usando R12, combinar produtos cartesianos com SELECTs subseqüentes para formar JOINs 5. Usando R3, R4, R7 e R11, quebrar em partes e mover para baixo tanto quanto possível as operações PROJECT, mantendo apenas os atributos necessários para processamento dos passos subseqüentes 6. Iden3ficar sub-árvores que representem grupos de operações que possam ser executadas por um único algoritmo de recuperação, possivelmente sem a necessidade de armazenamento de resultados intermediários (execução em pipeline versus execução materializada)

Sele3vidade e es3ma3vas de custos para o3mização As regras heurís3cas não são suficientes em todos os casos Existem situações de o3mização que podem ser melhor resolvidas se exis3r informação sobre os volumes de dados envolvidos Para que isso funcione corretamente, as es3ma3vas de custos têm que ser realistas e justas O custo do processamento das alterna3vas também não pode ser excessivo Es3ma3vas de custos são mais empregadas em consultas compiladas antecipadamente, enquanto para consultas intera3vas a escolha de uma alterna3va pode afetar o tempo de resposta

Sele3vidade e es3ma3vas de custos para o3mização A o3mização de consultas baseada em custos usa técnicas de o3mização propriamente ditas para encontrar a solução ó3ma em um espaço de soluções, minimizando o valor de uma função obje)vo (função de custo) As funções obje3vo são aproximadas, e portanto nem quando a solução ó3ma do problema de custos é encontrado podemos garan3r que se trata da solução ó3ma da estratégia para a consulta

Sele3vidade e es3ma3vas de custos para o3mização Componentes de custo Custo do acesso à memória secundária Custo de armazenamento (temporário) Custo computacional (busca, ordenação, cálculos, etc.) Custo de uso de memória principal (buffers necessários) Custo de comunicação (envio/recebimento da consulta e resultados) Para grandes BD, a ênfase é na minimização do custo de acesso à memória secundária Para BD de pequeno porte (cabe quase tudo na memória), a ênfase pode ser no custo computacional Em BD distribuídos, o custo de comunicação pode ser predominante Em muitos casos, considera-se apenas o custo do acesso ao disco

Sele3vidade e es3ma3vas de custos para o3mização Uso de informações do catálogo Número de registros (tuplas) (r) Tamanho médio do registro (R) Número de blocos de disco (b) Fator de bloco (número de registros por bloco) (ƒ) Número de níveis dos índices mul3nível (x) Número de valores dis3ntos de um atributo (d) Sele3vidade (sl): fração dos registros que sa3sfaz a uma condição de igualdade sobre o atributo (ex.: em 1000 registros, a sele3vidade de um atributo CPF é 0,001; a de um atributo sexo é 0,50) Atributo chave: sl = 1/r Atributo não chave: sl = d/r Cardinalidade da seleção (s): número médio de registros que sa3sfaz a uma condição de igualdade sobre o atributo (s = sl * r) Essas informações são aproximadas, dificilmente estarão totalmente atualizadas

Sele3vidade e es3ma3vas de custos para o3mização Exemplos de uso de funções de custo para SELECT Supondo r(empregado) = r E = 10000, b E = 2000, bf E = 5 Caminhos de acesso Índice em cluster sobre o atributo SALARIO, com x SAL = 3 níveis e cardinalidade s SAL = 20 Índice secundário sobre o atributo chave CPF, com x CPF =4 e s CPF = 1 Índice secundário sobre o atributo NUD, com x NUD =2 e b NUD = 4 blocos no primeiro nível, sendo d NUD =125, e portanto s NUD =10000/125 = 80 Índice secundário sobre o atributo SEXO, com x SEXO =1, sendo d SEXO = 2, e portanto s SEXO = 5000

Sele3vidade e es3ma3vas de custos para o3mização Exemplos (custos em número de acessos a disco) OP1: σ CPF= 55590333395 (EMPREGADO) Opções: S1 (força bruta) ou S6 (B-Tree, com igualdade) Custo de S1 = 2000/2 = 1000 (busca seqüencial por atrib. chave) Custo de S6 = x CPF + 1 = 4 + 1 = 5 OP2: σ NUMDEP>5 (DEPARTAMENTO) Opções: S1 (força bruta) ou S6 (B-Tree, com > ) Custo de S1 = 2000 (busca seqüencial por atrib. não chave) Custo de S6 = x NUD + (b NUD / 2) + (r / 2) = 2 + 4/2 + 10000/2 = 5004 (1 bloco por nível + metade dos blocos em cada nível + metade dos registros via índice)

Sele3vidade e es3ma3vas de custos para o3mização Exemplos (custos em número de acessos a disco) OP3: σ NUD=5 (EMPREGADO) Opções: S1 ou S6 Custo de S1= 2000 (busca seqüencial por atrib. não chave) Custo de S6 = x NUD + s NUD = 2 + 80 = 82 OP4: σ (NUD=5 AND SALARIO>3000 AND SEXO=F) (EMPREGADO) Opções: S1 ou S6 Custo de S1 = 2000 Custo de S6 sobre NUD = 82 (cf. acima) Custo de S6 sobre SALARIO = x SAL + b E / 2 = 3 + 2000/2 = 1003 Custo de S6 sobre SEXO = x SEXO + s SEXO = 1 + 5000 = 5001 Executar a seleção sobre NUD, executando a parte final da condição sobre cada registro recuperado O que ocorreria se o depto. 5 3vesse de fato 90% dos empregados?

Sele3vidade e es3ma3vas de custos para o3mização Para que se tenha es3ma3vas minimamente precisas para operações de junção, é necessário es3mar a quan3dade de tuplas que resulta É em geral definido como a fração de tuplas resultantes da junção sobre a quan3dade de tuplas produzidas por um produto cartesiano Sele)vidade da junção (join selec3vity, js) js = (R JOINc S) / (R X S) = (R JOINc S) / R * S Caso especial: condição de junção é R.A = S.B Se A é chave de R, então js <= 1 / R Se B é chave de S, então js <= 1 / S Loops aninhados (J1) ou loops únicos (J2) devem ser escolhidos com base na tabela com menos registros Vide seções 15.8.4 e 15.8.6 para es3ma3vas completas de custos em exemplos

Referências Capítulo 18 e 19 de Elmasri & Navathe 7ª Edição Vide: seção sobre estratégias de o3mização no ORACLE e documentação do ORACLE Comando HINT, para influenciar as decisões do o3mizador