SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
UTILIZAÇÃO DE SELETIVIDADE
E ESTIMATIVA DE CUSTO NA
OTIMIZAÇÃO DE CONSULTAS
Equipe e Conteúdo
Benedito Rodrigo
Denilson Sousa
Kamargo Leal
Francisco Nathanael
2
➔ 15.8 - UTILIZAÇÃO DE SELETIVIDADE E ESTIMATIVA DE CUSTO NA OTIMIZAÇÃO
DE CONSULTAS
◆ 15.8.1 - Componentes do Custo para a Execução de um Consulta
◆ 15.8.2 - Informações de Catálogo Utilizadas nas Funções de Custo
◆ 15.8.3 - Exemplos de Funções de Custo para SELECT
◆ 15.8.4 - Componentes do Custo para a Execução de um Consulta
◆ 15.8.5 - Consultas de Múltiplas Relações e Ordem de Junções
◆ 15.8.6 - Exemplo para Ilustrar a Otimização de Consulta Baseada em
Custo
➔ 15.9 - VISÃO GERAL DA OTIMIZAÇÃO DE CONSULTAS NO ORACLE
➔ 15.10 - VISÃO GERAL DA OTIMIZAÇÃO DE CONSULTAS NO ORACLE
Otimizador de Consultas
3
➔ Um otimizador de consultas não deve depender somente de
regras heurísticas;
➔ Ele deve estimar e comparar os custos da execução de uma
consulta usando diferentes estratégias de execução, e deve
escolher a estratégia com a menor estimativa de custo.
Otimizador de Consultas
4
Para essa abordagem funcionar, estimativas precisas de custo
são necessárias, de forma que diferentes estratégias sejam
comparadas de maneira correta e realista.
Otimizador de Consultas
5
Devemos limitar o número de estratégias de execução a ser
considerado; caso contrário, muito tempo será gasto fazendo as
estimativas de custo para as muitas estratégias de execução
possíveis.
Tipos de Consultas
6
➔ Consultas compiladas: A otimização é feita em tempo de
compilação e o código da estratégia de execução resultante é
armazenado e executado diretamente em tempo de execução.
➔ Consultas interpretadas: A otimização ocorre em tempo de
execução, uma otimização em escala completa pode diminuir a
velocidade do tempo de resposta.
Tipos de Consultas
7
Uma otimização mais elaborada é indicada para consultas
compiladas, enquanto uma otimização parcial, que consuma menos
tempo, funciona melhor para consultas interpretadas.
Otimização de consulta baseada no custo
8
As funções de custo utilizadas na otimização de consultas são
estimativas e não funções exatas de custo, de forma que a
otimização pode selecionar uma estratégia de execução de consulta
que não seja a estratégia ótima
Componentes do Custo
para a Execução de um
Consulta
O custo da execução de uma consulta inclui os
seguintes componentes:
9
Componentes do custo para a execução de uma Consulta
1. Custo de acesso ao armazenamento secundário - Esse é o custo
da busca, da leitura e da escrita de blocos de dados que residem em
armazenamento secundário, principalmente em discos.
2. Custo de armazenamento: Esse é o custo de armazenamento de
quaisquer arquivos temporários que sejam gerados por uma
estratégia de execução para a consulta.
10
Componentes do custo para a execução de uma Consulta
3. Custo de computação: Esse é o custo da realização, na memória,
das operações sobre os buffers de dados durante a execução da
consulta.
4. Custo do uso de memória: Esse é o custo referente ao número de
buffers de memória necessários durante a execução da consulta.
5. Custo de comunicação: Esse é o custo do transporte da consulta
e de seus resultados de um site de banco de dados para o site ou
terminal onde a consulta se originou.
11
Componentes do custo para a execução de uma Consulta
Para grandes bancos de dados, a ênfase principal é na minimização
do custo de acesso ao armazenamento secundário.
Para bancos de dados menores, a ênfase é a minimização do custo
de computação.
Em bancos de dados distribuídos, o custo de comunicação também
deve ser minimizado.
12
Componentes do custo para a execução de uma Consulta
É difícil incluir todos esses componentes de custo em uma
função de custo (ponderada) por causa da dificuldade em atribuir
pesos adequados aos componentes do custo. Essa é a razão pela
qual algumas funções de custo consideram apenas um único fator
— acesso a disco.
13
Informações de
Catálogo Utilizadas nas
Funções de Custo
14
Catálogo do Sistema
Um catálogo do sistema é um grupo de tabelas e exibições que
incorporam detalhes vitais em relação a um banco de dados. Cada
banco de dados composto por um catálogo do sistema e as
informações no catálogo do sistema especificam a estrutura do
banco de dados.
15
Estimar Custos
Para estimar os custos de várias estratégias de execução,
devemos manter atualizadas quaisquer informações que sejam
necessárias para as funções de custo. Essas informações podem ser
armazenadas no catálogo do SGBD, onde são acessadas pelo
otimizador de consulta.
16
Estimar Custos - Parametros
17
◆ Primeiro, devemos saber o tamanho de cada arquivo.
◆ Para um arquivo cujos registros são todos de um mesmo tipo,
também podem ser necessários o número de registros (tuplas)
(r), o tamanho (médio) do registro (R) e o número de blocos (b)
(ou boas estimativas deles).
◆ O fator de divisão em blocos (b/r) para o arquivo também pode
ser necessário.
Estimar Custos - Parametros
18
◆ Um outro parâmetro importante é o número de valores
distintos (d) de um atributo e sua seletividade (si), que é uma
fração dos registros que satisfazem uma condição de igualdade
baseada no atributo.
Isso permite a estimativa da cardinalidade da seleção (s = si * r) de
um atributo, que é o número médio de registros que irão satisfazer
uma condição de seleção de igualdade baseada no atributo.
Estimar Custos - Parametros
19
Para um atributo-chave, d = r,si= 1/r e s = 1. Para um atributo
que não é chave, por meio da suposição de que os d valores
distintos estão distribuídos uniformemente entre os registros,
estimamos si = (1/d), portanto, s = (r/d).
Estimar Custos - Parametros
20
Informações como o número de níveis de índice são mantidas
facilmente porque elas não se alteram com muita freqüência.
Entretanto, outras informações podem se alterar freqüentemente;
por exemplo, o número de registros r de um arquivo se altera toda
vez que um registro é incluído ou excluído.
Estimar Custos - Parametros
21
O otimizador de consulta precisará de valores razoavelmente
próximos a esses parâmetros para uso na estimativa de custo das
várias estratégias de execução, mas não necessariamente de
valores exatamente atualizados até o último minuto.
Exemplos de Funções
de Custo para SELECT
22
Funções de Custo para SELECT
➔ Funções de Custo em função do número de transferência entre
a memória e o disco.
➔ Essas funções de estimativa de tempo ignoram o tempo de
processamento, o custo de armazenamento e outros fatores.
➔ Denotação de custo de Si = Csi
23
Funções de Custo para SELECT
S1 - Pesquisa Linear (algoritmo de força bruta): Recupera cada
registro no arquivo e testa se seus valores de atributo satisfazem a
condição de seleção.
S2 - Pesquisa Binária: Se a condição de seleção envolver uma
comparação de igualdade em um atributo chave no qual o arquivo é
ordenado, a pesquisa binária
S3a- Usando um índice primário: Se a condição de seleção envolver
uma comparação de igualdade em um atributo chave com um
índice primário.
24
Funções de Custo para SELECT
S3b- Usando uma chave hash: Se a condição de seleção envolve
uma comparação de igualdade em um atributo chave com uma
chave hash.
S4- Usando um índice primário para recuperar vários registros:
Se a condição de comparação for >,>=,< ou <= em um campo chave
com índice primário.
S5- Usando um índice de agrupamento para recuperar vários
registros: Se a condição de seleção envolve uma comparação de
igualdade em um atributo não chave com índice de agrupamento.
25
Funções de Custo para SELECT
S6- Usando um índice secundário (B+-tree) em uma comparação
de igualdade: Este método de pesquisa pode ser utilizado para
recuperar um único registro se o campo de índice for uma chave
(tiver valores únicos) ou para recuperar múltiplos registros se o
campo de índice não for uma chave.
S7- Seleção conjuntiva usando um índice individual: Se um
atributo envolvido em qualquer condição simples isolada na
condição de seleção conjuntiva tiver um caminho de acesso que
permita o uso de um dos métodos S2 a S6.
26
Funções de Custo para SELECT
S8 - Seleção conjuntiva usando um índice composto: Se dois ou
mais atributos estiverem envolvidos nas condições de igualdade na
condição de seleção conjuntiva e um índice composto existe nos
campos combinados.
27
Funções de Custo para SELECT
S1. Abordagem de Busca Linear:
➔ Cs1 = b;
➔ Cs1 = (b/2);
➔ Cs1 = 1;
S2. Busca Binária:
➔ Cs2 = (b/2);
➔ Cs2 = ;
➔ Cs2 = 1;
28
Funções de Custo para SELECT
S3. Uso de um Índice Primário ou Chave Hash:
➔ Cs3 = x + 1; (índice primário)
➔ Cs3 = 1; (hashing estático/linear)
➔ Cs3 = 2; (hashing extensível)
S4. Uso de um Índice Ordenado para Múltiplos Registros:
➔ Cs4 = x + (b/2);
S5. Uso de um Índice Clustering para recuperar múltiplos
registros:
➔ Cs5 = x + [(s/bfr)];
29
Funções de Custo para SELECT
S6: Uso de um Índice Secundário (árvore-B):
➔ Cs6 = x + s; (pior caso)
➔ Cs6 = x + 1; (atributo-chave de indexação);
S7: Seleção Conjuntiva:
➔ S1;
➔ S2 e S6:
● Condição para recuperar registros;
● Verifica no buffer se os registros satisfazem as demais
condições de junção;
30
Funções de Custo para SELECT
S8: Seleção conjuntiva utilizando índice composto:
➔ S3;
➔ S5;
➔ S6;
● Dependendo do tipo de índice;
31
Exemplo:
Um armazém possui 3.000 registros, alocados em 600 blocos de
disco. Então,r= 3.000 , b=600 e bfr= 5. Considerando-se os
caminhos de acesso:
1 - Índice secundário sobre atributo chave COD_FORNEC com x=5 e
s=1;
2 - Índice secundário sobre atributo não chave UNIDADE com x=3 e
Bi1=4. Existem d=12 valores distintos para UNIDADE, então: s=(r/d) =
250
32
Exemplo:
(OP1): UNIDADE=‘11’ AND CONDIÇÃO_PGTO=‘A .V.’ (ESTOQUE)
(OP2): COD-FORNEC = ‘012’ (ESTOQUE)
33
Custos
- Para pesquisa linear:
- Para OP1, Condição conjuntiva, custo dos componentes da
seleção, mais a pesquisa linear.
- Para OP2,
34
Funções de Custo para JOIN
Para se medir o custo da função JOIN devemos ter uma
estimativa do tamanho (número de tuplas) do arquivo que resulta
após a operação JOIN.
Pode-se aplicar às operações de JOIN e ter como resultante um
arquivo de junção resultante de um produto cartesiano. Se estas
duas operações são aplicadas ao mesmo arquivo de entrada, isso é
chamado de seletividade da junção (js).
35
Funções de Custo para JOIN
J1. Junção de laços aninhados;
• Cj1
= bR
+ (bR
* bS
) + ((js * |R| * |S|) / bfrRS
)
J2. Junção de laço único;
J3. Junção sort-merge;
• Cj3a
= bR
+ bS
+ ((js * |R| * |S|) / bfrRS
)
36
Funções de Custo para JOIN
J2. Junção de laço único:
➔ Índice Secundário:
Cj2a
= bR
+ (|R| * (xB
+ sB
)) + ((js * |R| * |S|) / bfrRS
)
➔ Índice clustering:
Cj2b
= bR
+ (|R| * (xB
+ sB
/bfrB
)) + ((js * |R| * |S|) / bfrRS
)
37
Funções de Custo para JOIN
➔ Índice primário:
Cj2c
= bR
+ (|R| * (xB
+ 1)) + ((js * |R| * |S|) / bfrRS
)
➔ Chave hash:
Cj2d
= bR
+ (|R| * h) + ((js * |R| * |S|) / bfrRS
)
38
Visão Geral da Otimização
de consultas no Oracle
39
SGBD Oracle
A otimização de uma consulta constitui em determinar a
melhor estratégia para executá-la no banco de dados. Motivado por
esta preocupação, os SGBDs atuais já trazem um conjunto grande
de facilidades que, em muitas vezes, automatizam o processo de
otimização.
40
SGBD Oracle
➔ Os administradores de banco de dados gastam atualmente
muito tempo na realização de monitoração e ajuste de
consultas SQL.
➔ Ter o conhecimento de uma metodologia padrão para análise de
problemas desse tipo vai auxiliar a utilizar melhor o tempo
dentre as atividades desempenhadas pelo profissional.
41
SGBD Oracle
➔ O otimizador determina a maneira mais eficiente de se rodar
um SQL. Para executar qualquer SQL o Oracle tem que derivar
um "plano de execução".
➔ O plano de execução de uma consulta é uma descrição de como
o Oracle irá implementar a recuperação dos dados para
satisfazer a um determinado SQL. Desde a versão 7 até a 9 o
Oracle possui dois otimizadores que serão descritos a seguir:
42
SGBD Oracle
O SGBD ORACLE fornece duas abordagens diferentes para a
otimização de consultas:
➔ Baseada em regras - O otimizador escolhe os planos de
execução baseando-se em operações classificadas
heuristicamente.
➔ Baseada em custos - O otimizador examina caminhos de
acesso alternativos e algoritmos de operadores, e escolhe o
plano de execução com menor estimativa de custo.
43
SGBD Oracle
O otimizador da ORACLE calcula este custo com base no uso
estimado dos recursos, tais como a necessidade de ENTRADA/SAÍDA,
de tempo de CPU e de memória.
➔ O objetivo da otimização baseada em custo na ORACLE é
minimizar o tempo decorrido para processar a consulta inteira.
44
SGBD Oracle
Uma funcionalidade interessante do otimizador de consultas da
ORACLE é a capacidade de um desenvolvedor de aplicações definir
dicas para o otimizador
45
Se existirem 10.000 empregados, então o otimizador estimaria que metade é masculina e metade
é feminina, supondo uma distribuição uniforme dos dados
46
PNOME MINICIAL UNOME SSN DATA
NASC
ENDEREÇO SEXO SALARIO SUPERSSN DNO
EMPREGADO
➔ Se existir um índice secundário, ele muito provavelmente não
seria utilizado;
➔ Se o desenvolvedor da aplicação souber que existem apenas 100
empregados masculinos, uma dica poderia ser especificar que,
em uma consulta SQL, *, o índice associado fosse utilizado no
processamento da consulta
➔ *WHERE SEXO = ‘M’
47
Otimização Semântica
de Consultas
48
Otimização Semântica
A Otimização Semântica é uma técnica que pode ser usada em
combinação com as técnicas discutidas anteriormente e usa
restrições especificadas no esquema do banco de Dados.
Ex.: atributos únicos e outras restrições mais complexas
Sendo o principal objetivo o de transformar uma consulta em uma
outra consulta que seja mais eficiente para ser executada.
49
Otimização Semântica
SELECT E.UN0ME, G.UN0ME
FR0M EMPREGADO AS E, EMPREGADO AS G
WHERE E.SSN_SUPER = G.SSN AND E.SALARI0 > G.SALÁRIO
50
Otimização Semântica
A aplicação dessa otimização pode economizar um tempo
considerável se a verificação da restrição puder ser feita
eficientemente.
Dessa forma, pesquisar pelas muitas restrições para encontrar
aquelas que são aplicáveis a uma determinada consulta e
que podem otimizá-la semanticamente também pode consumir
bastante tempo.
51
Obrigado!
Alguma dúvida?
52
Exercícios
53
Exercícios
01 - Por que um otimizador de consultas não deve depender apenas de
regras heurísticas ?
02 - Quais são os dois principais tipos de consultas ?
03 - Quais são os componentes do custo para a execução das consulta ?
04 - Cite as informações de catálogos utilizadas nas funções de custo.
05 - O SGBD Oracle fornece duas abordagens diferentes para a
otimização de consultas, quais são?
54
Exercicios
06 - Descreva as duas abordagens citadas acima.
07 - O que é otimização semântica?
08 - A busca binária acessa aproximadamente CS2 = log2
b + [(s/bfr)] – 1
blocos de arquivo. Sabendo-se que, no caso, s = 1, o que acontece se a
condição de igualdade (condição da busca) for sobre um atributo único :
A. O acesso é reduzido a logb
B. O acesso é elevado a log2
b + 1
C. O acesso é reduzido a log2
b
D. O acesso é reduzido a logb
+ 1
E. Nada muda, já que s =155
Exercicios
09 - No que se refere às Funções de Custo para JOIN, o custo
representado por Cj2c
= bR
+ (|R| * (xB
+ 1)) + ((js * |R| * |S|) / bfrRS
)
refere-se a junção:
A. merge-sort
B. laço único / índice primário
C. laço único / índice secundário
D. laços aninhados
E. laço único / índice clustering
56
Exercicios
10 - Quais são as funções de custos existentes para estimativa de
Custos? (Apenas o nome)
57

Mais conteúdo relacionado

Mais procurados

Introdução à Biblioteconomia para Bibliotecas Escolares
Introdução à Biblioteconomia para Bibliotecas EscolaresIntrodução à Biblioteconomia para Bibliotecas Escolares
Introdução à Biblioteconomia para Bibliotecas EscolaresCarlos Pinheiro
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
How to analyze and tune sql queries for better performance vts2016
How to analyze and tune sql queries for better performance vts2016How to analyze and tune sql queries for better performance vts2016
How to analyze and tune sql queries for better performance vts2016oysteing
 
Sistemas de apoio à decisão - SAD
Sistemas de apoio à decisão - SADSistemas de apoio à decisão - SAD
Sistemas de apoio à decisão - SADJosé Luiz Wollinger
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01Rangel Javier
 
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)Leinylson Fontinele
 
Banco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosBanco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosLeinylson Fontinele
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Vitor Hugo Melo Araújo
 
SQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tangoSQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tangoMauro Pagano
 
LIVRO PROPRIETÁRIO - MODELAGEM DE DADOS
LIVRO PROPRIETÁRIO - MODELAGEM DE DADOSLIVRO PROPRIETÁRIO - MODELAGEM DE DADOS
LIVRO PROPRIETÁRIO - MODELAGEM DE DADOSOs Fantasmas !
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basicoAmadeo Santos
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Leinylson Fontinele
 
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsYour tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsJohn Kanagaraj
 
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)Gustavo Zimmermann
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Leinylson Fontinele
 

Mais procurados (20)

REVISAO-DP-900-V2
REVISAO-DP-900-V2REVISAO-DP-900-V2
REVISAO-DP-900-V2
 
Introdução à Biblioteconomia para Bibliotecas Escolares
Introdução à Biblioteconomia para Bibliotecas EscolaresIntrodução à Biblioteconomia para Bibliotecas Escolares
Introdução à Biblioteconomia para Bibliotecas Escolares
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
How to analyze and tune sql queries for better performance vts2016
How to analyze and tune sql queries for better performance vts2016How to analyze and tune sql queries for better performance vts2016
How to analyze and tune sql queries for better performance vts2016
 
Sistemas de apoio à decisão - SAD
Sistemas de apoio à decisão - SADSistemas de apoio à decisão - SAD
Sistemas de apoio à decisão - SAD
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
 
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
 
Banco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosBanco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de Dados
 
Denormalization
DenormalizationDenormalization
Denormalization
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 
SQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tangoSQL Tuning, takes 3 to tango
SQL Tuning, takes 3 to tango
 
Db2 partitioning
Db2 partitioningDb2 partitioning
Db2 partitioning
 
LIVRO PROPRIETÁRIO - MODELAGEM DE DADOS
LIVRO PROPRIETÁRIO - MODELAGEM DE DADOSLIVRO PROPRIETÁRIO - MODELAGEM DE DADOS
LIVRO PROPRIETÁRIO - MODELAGEM DE DADOS
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basico
 
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
Banco de Dados I - Aula 10 - Banco de Dados Relacional (Modelo Físico)
 
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and AdvisorsYour tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
 
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
 
Modelos de base de dados
Modelos de base de dadosModelos de base de dados
Modelos de base de dados
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
 

Semelhante a Utilização de Seletividade e Estimativa de Custo na Otimização de Consultas

Tuning Banco de Dados
Tuning Banco de DadosTuning Banco de Dados
Tuning Banco de DadosFelipeCaiuby
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosJuliano Atanazio
 
Data Warehouse em Bancos de Dados NoSQL - Isaac.pptx
Data Warehouse em Bancos de Dados NoSQL - Isaac.pptxData Warehouse em Bancos de Dados NoSQL - Isaac.pptx
Data Warehouse em Bancos de Dados NoSQL - Isaac.pptxIsaac Medeiros
 
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Bruno Caimar
 
Hp education services
Hp education servicesHp education services
Hp education servicesCarlo Seixas
 
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Joao Galdino Mello de Souza
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandosrobinhoct
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
Otimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSOtimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSAmazon Web Services LATAM
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkFelipe
 
P2 gestao infraestrutura_de_ti
P2 gestao infraestrutura_de_tiP2 gestao infraestrutura_de_ti
P2 gestao infraestrutura_de_tiCleber Oliveira
 

Semelhante a Utilização de Seletividade e Estimativa de Custo na Otimização de Consultas (20)

Tuning Banco de Dados
Tuning Banco de DadosTuning Banco de Dados
Tuning Banco de Dados
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de Dados
 
08 data selectors-cursogxxbr
08 data selectors-cursogxxbr08 data selectors-cursogxxbr
08 data selectors-cursogxxbr
 
Falando de TCO na Nuvem AWS
Falando de TCO na Nuvem AWSFalando de TCO na Nuvem AWS
Falando de TCO na Nuvem AWS
 
Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
Data Warehouse em Bancos de Dados NoSQL - Isaac.pptx
Data Warehouse em Bancos de Dados NoSQL - Isaac.pptxData Warehouse em Bancos de Dados NoSQL - Isaac.pptx
Data Warehouse em Bancos de Dados NoSQL - Isaac.pptx
 
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
 
P10 estoque custos
P10 estoque custosP10 estoque custos
P10 estoque custos
 
Apostila basica sql
Apostila basica sqlApostila basica sql
Apostila basica sql
 
Hp education services
Hp education servicesHp education services
Hp education services
 
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
 
Novidades do SQL Server 2008
Novidades do SQL Server 2008Novidades do SQL Server 2008
Novidades do SQL Server 2008
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Otimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSOtimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWS
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache Spark
 
P2 gestao infraestrutura_de_ti
P2 gestao infraestrutura_de_tiP2 gestao infraestrutura_de_ti
P2 gestao infraestrutura_de_ti
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 

Mais de Denilson Sousa

DHTML - Dynamic HyperText Markup Language
DHTML - Dynamic HyperText Markup LanguageDHTML - Dynamic HyperText Markup Language
DHTML - Dynamic HyperText Markup LanguageDenilson Sousa
 
Sistema de suporte ao executivo
Sistema de suporte ao executivoSistema de suporte ao executivo
Sistema de suporte ao executivoDenilson Sousa
 
Sistema de Apoio a Decisao
Sistema de Apoio a DecisaoSistema de Apoio a Decisao
Sistema de Apoio a DecisaoDenilson Sousa
 
Sistema de informação gerencial
Sistema de informação gerencialSistema de informação gerencial
Sistema de informação gerencialDenilson Sousa
 
Sistema de automação de escritório
Sistema de automação de escritórioSistema de automação de escritório
Sistema de automação de escritórioDenilson Sousa
 
Sistema de conhecimento do trabalho
Sistema de conhecimento do trabalhoSistema de conhecimento do trabalho
Sistema de conhecimento do trabalhoDenilson Sousa
 
Sistema de processamento de transações
Sistema de processamento de transações  Sistema de processamento de transações
Sistema de processamento de transações Denilson Sousa
 

Mais de Denilson Sousa (8)

DHTML - Dynamic HyperText Markup Language
DHTML - Dynamic HyperText Markup LanguageDHTML - Dynamic HyperText Markup Language
DHTML - Dynamic HyperText Markup Language
 
Engenharia semiotica
Engenharia semioticaEngenharia semiotica
Engenharia semiotica
 
Sistema de suporte ao executivo
Sistema de suporte ao executivoSistema de suporte ao executivo
Sistema de suporte ao executivo
 
Sistema de Apoio a Decisao
Sistema de Apoio a DecisaoSistema de Apoio a Decisao
Sistema de Apoio a Decisao
 
Sistema de informação gerencial
Sistema de informação gerencialSistema de informação gerencial
Sistema de informação gerencial
 
Sistema de automação de escritório
Sistema de automação de escritórioSistema de automação de escritório
Sistema de automação de escritório
 
Sistema de conhecimento do trabalho
Sistema de conhecimento do trabalhoSistema de conhecimento do trabalho
Sistema de conhecimento do trabalho
 
Sistema de processamento de transações
Sistema de processamento de transações  Sistema de processamento de transações
Sistema de processamento de transações
 

Utilização de Seletividade e Estimativa de Custo na Otimização de Consultas

  • 1. UTILIZAÇÃO DE SELETIVIDADE E ESTIMATIVA DE CUSTO NA OTIMIZAÇÃO DE CONSULTAS
  • 2. Equipe e Conteúdo Benedito Rodrigo Denilson Sousa Kamargo Leal Francisco Nathanael 2 ➔ 15.8 - UTILIZAÇÃO DE SELETIVIDADE E ESTIMATIVA DE CUSTO NA OTIMIZAÇÃO DE CONSULTAS ◆ 15.8.1 - Componentes do Custo para a Execução de um Consulta ◆ 15.8.2 - Informações de Catálogo Utilizadas nas Funções de Custo ◆ 15.8.3 - Exemplos de Funções de Custo para SELECT ◆ 15.8.4 - Componentes do Custo para a Execução de um Consulta ◆ 15.8.5 - Consultas de Múltiplas Relações e Ordem de Junções ◆ 15.8.6 - Exemplo para Ilustrar a Otimização de Consulta Baseada em Custo ➔ 15.9 - VISÃO GERAL DA OTIMIZAÇÃO DE CONSULTAS NO ORACLE ➔ 15.10 - VISÃO GERAL DA OTIMIZAÇÃO DE CONSULTAS NO ORACLE
  • 3. Otimizador de Consultas 3 ➔ Um otimizador de consultas não deve depender somente de regras heurísticas; ➔ Ele deve estimar e comparar os custos da execução de uma consulta usando diferentes estratégias de execução, e deve escolher a estratégia com a menor estimativa de custo.
  • 4. Otimizador de Consultas 4 Para essa abordagem funcionar, estimativas precisas de custo são necessárias, de forma que diferentes estratégias sejam comparadas de maneira correta e realista.
  • 5. Otimizador de Consultas 5 Devemos limitar o número de estratégias de execução a ser considerado; caso contrário, muito tempo será gasto fazendo as estimativas de custo para as muitas estratégias de execução possíveis.
  • 6. Tipos de Consultas 6 ➔ Consultas compiladas: A otimização é feita em tempo de compilação e o código da estratégia de execução resultante é armazenado e executado diretamente em tempo de execução. ➔ Consultas interpretadas: A otimização ocorre em tempo de execução, uma otimização em escala completa pode diminuir a velocidade do tempo de resposta.
  • 7. Tipos de Consultas 7 Uma otimização mais elaborada é indicada para consultas compiladas, enquanto uma otimização parcial, que consuma menos tempo, funciona melhor para consultas interpretadas.
  • 8. Otimização de consulta baseada no custo 8 As funções de custo utilizadas na otimização de consultas são estimativas e não funções exatas de custo, de forma que a otimização pode selecionar uma estratégia de execução de consulta que não seja a estratégia ótima
  • 9. Componentes do Custo para a Execução de um Consulta O custo da execução de uma consulta inclui os seguintes componentes: 9
  • 10. Componentes do custo para a execução de uma Consulta 1. Custo de acesso ao armazenamento secundário - Esse é o custo da busca, da leitura e da escrita de blocos de dados que residem em armazenamento secundário, principalmente em discos. 2. Custo de armazenamento: Esse é o custo de armazenamento de quaisquer arquivos temporários que sejam gerados por uma estratégia de execução para a consulta. 10
  • 11. Componentes do custo para a execução de uma Consulta 3. Custo de computação: Esse é o custo da realização, na memória, das operações sobre os buffers de dados durante a execução da consulta. 4. Custo do uso de memória: Esse é o custo referente ao número de buffers de memória necessários durante a execução da consulta. 5. Custo de comunicação: Esse é o custo do transporte da consulta e de seus resultados de um site de banco de dados para o site ou terminal onde a consulta se originou. 11
  • 12. Componentes do custo para a execução de uma Consulta Para grandes bancos de dados, a ênfase principal é na minimização do custo de acesso ao armazenamento secundário. Para bancos de dados menores, a ênfase é a minimização do custo de computação. Em bancos de dados distribuídos, o custo de comunicação também deve ser minimizado. 12
  • 13. Componentes do custo para a execução de uma Consulta É difícil incluir todos esses componentes de custo em uma função de custo (ponderada) por causa da dificuldade em atribuir pesos adequados aos componentes do custo. Essa é a razão pela qual algumas funções de custo consideram apenas um único fator — acesso a disco. 13
  • 14. Informações de Catálogo Utilizadas nas Funções de Custo 14
  • 15. Catálogo do Sistema Um catálogo do sistema é um grupo de tabelas e exibições que incorporam detalhes vitais em relação a um banco de dados. Cada banco de dados composto por um catálogo do sistema e as informações no catálogo do sistema especificam a estrutura do banco de dados. 15
  • 16. Estimar Custos Para estimar os custos de várias estratégias de execução, devemos manter atualizadas quaisquer informações que sejam necessárias para as funções de custo. Essas informações podem ser armazenadas no catálogo do SGBD, onde são acessadas pelo otimizador de consulta. 16
  • 17. Estimar Custos - Parametros 17 ◆ Primeiro, devemos saber o tamanho de cada arquivo. ◆ Para um arquivo cujos registros são todos de um mesmo tipo, também podem ser necessários o número de registros (tuplas) (r), o tamanho (médio) do registro (R) e o número de blocos (b) (ou boas estimativas deles). ◆ O fator de divisão em blocos (b/r) para o arquivo também pode ser necessário.
  • 18. Estimar Custos - Parametros 18 ◆ Um outro parâmetro importante é o número de valores distintos (d) de um atributo e sua seletividade (si), que é uma fração dos registros que satisfazem uma condição de igualdade baseada no atributo. Isso permite a estimativa da cardinalidade da seleção (s = si * r) de um atributo, que é o número médio de registros que irão satisfazer uma condição de seleção de igualdade baseada no atributo.
  • 19. Estimar Custos - Parametros 19 Para um atributo-chave, d = r,si= 1/r e s = 1. Para um atributo que não é chave, por meio da suposição de que os d valores distintos estão distribuídos uniformemente entre os registros, estimamos si = (1/d), portanto, s = (r/d).
  • 20. Estimar Custos - Parametros 20 Informações como o número de níveis de índice são mantidas facilmente porque elas não se alteram com muita freqüência. Entretanto, outras informações podem se alterar freqüentemente; por exemplo, o número de registros r de um arquivo se altera toda vez que um registro é incluído ou excluído.
  • 21. Estimar Custos - Parametros 21 O otimizador de consulta precisará de valores razoavelmente próximos a esses parâmetros para uso na estimativa de custo das várias estratégias de execução, mas não necessariamente de valores exatamente atualizados até o último minuto.
  • 22. Exemplos de Funções de Custo para SELECT 22
  • 23. Funções de Custo para SELECT ➔ Funções de Custo em função do número de transferência entre a memória e o disco. ➔ Essas funções de estimativa de tempo ignoram o tempo de processamento, o custo de armazenamento e outros fatores. ➔ Denotação de custo de Si = Csi 23
  • 24. Funções de Custo para SELECT S1 - Pesquisa Linear (algoritmo de força bruta): Recupera cada registro no arquivo e testa se seus valores de atributo satisfazem a condição de seleção. S2 - Pesquisa Binária: Se a condição de seleção envolver uma comparação de igualdade em um atributo chave no qual o arquivo é ordenado, a pesquisa binária S3a- Usando um índice primário: Se a condição de seleção envolver uma comparação de igualdade em um atributo chave com um índice primário. 24
  • 25. Funções de Custo para SELECT S3b- Usando uma chave hash: Se a condição de seleção envolve uma comparação de igualdade em um atributo chave com uma chave hash. S4- Usando um índice primário para recuperar vários registros: Se a condição de comparação for >,>=,< ou <= em um campo chave com índice primário. S5- Usando um índice de agrupamento para recuperar vários registros: Se a condição de seleção envolve uma comparação de igualdade em um atributo não chave com índice de agrupamento. 25
  • 26. Funções de Custo para SELECT S6- Usando um índice secundário (B+-tree) em uma comparação de igualdade: Este método de pesquisa pode ser utilizado para recuperar um único registro se o campo de índice for uma chave (tiver valores únicos) ou para recuperar múltiplos registros se o campo de índice não for uma chave. S7- Seleção conjuntiva usando um índice individual: Se um atributo envolvido em qualquer condição simples isolada na condição de seleção conjuntiva tiver um caminho de acesso que permita o uso de um dos métodos S2 a S6. 26
  • 27. Funções de Custo para SELECT S8 - Seleção conjuntiva usando um índice composto: Se dois ou mais atributos estiverem envolvidos nas condições de igualdade na condição de seleção conjuntiva e um índice composto existe nos campos combinados. 27
  • 28. Funções de Custo para SELECT S1. Abordagem de Busca Linear: ➔ Cs1 = b; ➔ Cs1 = (b/2); ➔ Cs1 = 1; S2. Busca Binária: ➔ Cs2 = (b/2); ➔ Cs2 = ; ➔ Cs2 = 1; 28
  • 29. Funções de Custo para SELECT S3. Uso de um Índice Primário ou Chave Hash: ➔ Cs3 = x + 1; (índice primário) ➔ Cs3 = 1; (hashing estático/linear) ➔ Cs3 = 2; (hashing extensível) S4. Uso de um Índice Ordenado para Múltiplos Registros: ➔ Cs4 = x + (b/2); S5. Uso de um Índice Clustering para recuperar múltiplos registros: ➔ Cs5 = x + [(s/bfr)]; 29
  • 30. Funções de Custo para SELECT S6: Uso de um Índice Secundário (árvore-B): ➔ Cs6 = x + s; (pior caso) ➔ Cs6 = x + 1; (atributo-chave de indexação); S7: Seleção Conjuntiva: ➔ S1; ➔ S2 e S6: ● Condição para recuperar registros; ● Verifica no buffer se os registros satisfazem as demais condições de junção; 30
  • 31. Funções de Custo para SELECT S8: Seleção conjuntiva utilizando índice composto: ➔ S3; ➔ S5; ➔ S6; ● Dependendo do tipo de índice; 31
  • 32. Exemplo: Um armazém possui 3.000 registros, alocados em 600 blocos de disco. Então,r= 3.000 , b=600 e bfr= 5. Considerando-se os caminhos de acesso: 1 - Índice secundário sobre atributo chave COD_FORNEC com x=5 e s=1; 2 - Índice secundário sobre atributo não chave UNIDADE com x=3 e Bi1=4. Existem d=12 valores distintos para UNIDADE, então: s=(r/d) = 250 32
  • 33. Exemplo: (OP1): UNIDADE=‘11’ AND CONDIÇÃO_PGTO=‘A .V.’ (ESTOQUE) (OP2): COD-FORNEC = ‘012’ (ESTOQUE) 33
  • 34. Custos - Para pesquisa linear: - Para OP1, Condição conjuntiva, custo dos componentes da seleção, mais a pesquisa linear. - Para OP2, 34
  • 35. Funções de Custo para JOIN Para se medir o custo da função JOIN devemos ter uma estimativa do tamanho (número de tuplas) do arquivo que resulta após a operação JOIN. Pode-se aplicar às operações de JOIN e ter como resultante um arquivo de junção resultante de um produto cartesiano. Se estas duas operações são aplicadas ao mesmo arquivo de entrada, isso é chamado de seletividade da junção (js). 35
  • 36. Funções de Custo para JOIN J1. Junção de laços aninhados; • Cj1 = bR + (bR * bS ) + ((js * |R| * |S|) / bfrRS ) J2. Junção de laço único; J3. Junção sort-merge; • Cj3a = bR + bS + ((js * |R| * |S|) / bfrRS ) 36
  • 37. Funções de Custo para JOIN J2. Junção de laço único: ➔ Índice Secundário: Cj2a = bR + (|R| * (xB + sB )) + ((js * |R| * |S|) / bfrRS ) ➔ Índice clustering: Cj2b = bR + (|R| * (xB + sB /bfrB )) + ((js * |R| * |S|) / bfrRS ) 37
  • 38. Funções de Custo para JOIN ➔ Índice primário: Cj2c = bR + (|R| * (xB + 1)) + ((js * |R| * |S|) / bfrRS ) ➔ Chave hash: Cj2d = bR + (|R| * h) + ((js * |R| * |S|) / bfrRS ) 38
  • 39. Visão Geral da Otimização de consultas no Oracle 39
  • 40. SGBD Oracle A otimização de uma consulta constitui em determinar a melhor estratégia para executá-la no banco de dados. Motivado por esta preocupação, os SGBDs atuais já trazem um conjunto grande de facilidades que, em muitas vezes, automatizam o processo de otimização. 40
  • 41. SGBD Oracle ➔ Os administradores de banco de dados gastam atualmente muito tempo na realização de monitoração e ajuste de consultas SQL. ➔ Ter o conhecimento de uma metodologia padrão para análise de problemas desse tipo vai auxiliar a utilizar melhor o tempo dentre as atividades desempenhadas pelo profissional. 41
  • 42. SGBD Oracle ➔ O otimizador determina a maneira mais eficiente de se rodar um SQL. Para executar qualquer SQL o Oracle tem que derivar um "plano de execução". ➔ O plano de execução de uma consulta é uma descrição de como o Oracle irá implementar a recuperação dos dados para satisfazer a um determinado SQL. Desde a versão 7 até a 9 o Oracle possui dois otimizadores que serão descritos a seguir: 42
  • 43. SGBD Oracle O SGBD ORACLE fornece duas abordagens diferentes para a otimização de consultas: ➔ Baseada em regras - O otimizador escolhe os planos de execução baseando-se em operações classificadas heuristicamente. ➔ Baseada em custos - O otimizador examina caminhos de acesso alternativos e algoritmos de operadores, e escolhe o plano de execução com menor estimativa de custo. 43
  • 44. SGBD Oracle O otimizador da ORACLE calcula este custo com base no uso estimado dos recursos, tais como a necessidade de ENTRADA/SAÍDA, de tempo de CPU e de memória. ➔ O objetivo da otimização baseada em custo na ORACLE é minimizar o tempo decorrido para processar a consulta inteira. 44
  • 45. SGBD Oracle Uma funcionalidade interessante do otimizador de consultas da ORACLE é a capacidade de um desenvolvedor de aplicações definir dicas para o otimizador 45
  • 46. Se existirem 10.000 empregados, então o otimizador estimaria que metade é masculina e metade é feminina, supondo uma distribuição uniforme dos dados 46 PNOME MINICIAL UNOME SSN DATA NASC ENDEREÇO SEXO SALARIO SUPERSSN DNO EMPREGADO
  • 47. ➔ Se existir um índice secundário, ele muito provavelmente não seria utilizado; ➔ Se o desenvolvedor da aplicação souber que existem apenas 100 empregados masculinos, uma dica poderia ser especificar que, em uma consulta SQL, *, o índice associado fosse utilizado no processamento da consulta ➔ *WHERE SEXO = ‘M’ 47
  • 49. Otimização Semântica A Otimização Semântica é uma técnica que pode ser usada em combinação com as técnicas discutidas anteriormente e usa restrições especificadas no esquema do banco de Dados. Ex.: atributos únicos e outras restrições mais complexas Sendo o principal objetivo o de transformar uma consulta em uma outra consulta que seja mais eficiente para ser executada. 49
  • 50. Otimização Semântica SELECT E.UN0ME, G.UN0ME FR0M EMPREGADO AS E, EMPREGADO AS G WHERE E.SSN_SUPER = G.SSN AND E.SALARI0 > G.SALÁRIO 50
  • 51. Otimização Semântica A aplicação dessa otimização pode economizar um tempo considerável se a verificação da restrição puder ser feita eficientemente. Dessa forma, pesquisar pelas muitas restrições para encontrar aquelas que são aplicáveis a uma determinada consulta e que podem otimizá-la semanticamente também pode consumir bastante tempo. 51
  • 54. Exercícios 01 - Por que um otimizador de consultas não deve depender apenas de regras heurísticas ? 02 - Quais são os dois principais tipos de consultas ? 03 - Quais são os componentes do custo para a execução das consulta ? 04 - Cite as informações de catálogos utilizadas nas funções de custo. 05 - O SGBD Oracle fornece duas abordagens diferentes para a otimização de consultas, quais são? 54
  • 55. Exercicios 06 - Descreva as duas abordagens citadas acima. 07 - O que é otimização semântica? 08 - A busca binária acessa aproximadamente CS2 = log2 b + [(s/bfr)] – 1 blocos de arquivo. Sabendo-se que, no caso, s = 1, o que acontece se a condição de igualdade (condição da busca) for sobre um atributo único : A. O acesso é reduzido a logb B. O acesso é elevado a log2 b + 1 C. O acesso é reduzido a log2 b D. O acesso é reduzido a logb + 1 E. Nada muda, já que s =155
  • 56. Exercicios 09 - No que se refere às Funções de Custo para JOIN, o custo representado por Cj2c = bR + (|R| * (xB + 1)) + ((js * |R| * |S|) / bfrRS ) refere-se a junção: A. merge-sort B. laço único / índice primário C. laço único / índice secundário D. laços aninhados E. laço único / índice clustering 56
  • 57. Exercicios 10 - Quais são as funções de custos existentes para estimativa de Custos? (Apenas o nome) 57