OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um...

19
OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira

Transcript of OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um...

Page 1: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

OTIMIZADOR DE CONSULTAS

Lílian Simão Oliveira

Page 2: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

“a otimização da consulta apresenta tanto um desafio como uma oportunidade”, pois a otimização feita pelo programador ou por um otimizador de banco de dados torna-se um desafio devido ao grande número de relacionamentos existentes em um banco e a diversidade de estruturas de dados existentes no SGBD.

A oportunidade acontece pelo simples fato de que otimizar consultas é possível e viável, seja ela como for, feita pelo programador humano, pelo DBA ou pelo próprio otimizador do banco.

Page 3: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Otimização de Consulta

Uma consulta SQL quando é solicitada ao banco de dados é tratada pelo SGBD, que ao encontrar o melhor caminho, mostra o resultado das informações descritas no comando.

Page 4: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Passos do SGBD

Page 5: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Otimizador de consultas

Em algumas linguagens de consulta, a estratégia de execução é definida pela maneira como o usuário (ou programador) expressa a consulta

Em SQL, que é uma linguagem declarativa, apenas os resultados desejados são especificados

Portanto, a otimização de consultas é necessária em SGBDs relacionais baseados em SQL

Page 6: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Otimizador de Consultas

Passos principais Tradução da consulta SQL para a álgebra

relacional Otimização do resultado

Estratégias de otimização Otimização baseada em heurísticas Otimização baseada na estimativa de custo

da consulta Otimização semântica

Page 7: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Consultas baseadas em Heurísticas Consultas são representadas internamente na forma de

uma árvore ou grafo Árvores de consulta são preferidas para a otimização pois

determinam a ordem de execução das operações Grafos de consulta indicam apenas as operações e os

respectivos operandos envolvidos portanto, existe apenas um grafo correspondente a cada consulta

Regras heurísticas são usadas para alterar a representação interna (árvore ou grafo) de uma consulta de modo a otimizar a sua execução

Por exemplo: operações de projeção e seleção são aplicadas antes de uma junção

O plano de execução gerado determina a ordem em que as operações serão executadas e os recursos a serem utilizados (por ex., índices)

Page 8: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo

Consulta Q2 : Para cada projeto localizado em ‘Stafford’, recupere o

número do projeto, o número do departamento responsável e o último nome, o endereço e a data de nascimento do gerente do departamento.

Consulta SQL: SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS,

E.BDATE FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E

WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND

P.PLOCATION=‘STAFFORD’; Álgebra Relacional:

Page 9: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Árvore de consulta

Page 10: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Árvore Canônica

Page 11: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo 2

Page 12: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo2 – Etapa 1

Page 13: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo 2- Etapa 2

Page 14: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo 2- Etapa 3

Page 15: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo 2 – Etapa 4

Page 16: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Exemplo 2 – Etapa 5

Page 17: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Resumindo

1. Executar operações de SELEÇÃO e PROJEÇÃO primeiramente;

2. A JUNÇÃO só deve ser realizada depois da SELEÇÃO e PROJEÇÃO;

3. Somente os atributos solicitados para o resultado da consulta e os que realmente são necessários em consultas subseqüentes é que devem ser projetados;

4. Evitar geração de múltiplas tabelas intermediárias;

5. Pesquisar as subexpressões comuns e processá-las somente uma vez;

Page 18: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Otimização baseada em Custo A otimização baseada em custos é gerada a

partir de funções estatísticas dos SGBDs. Estas funções armazenam informações referentes ao número de tuplas, aos índices, as chaves e a cardinalidade das tabelas. As estatísticas da distribuição dos dados nas colunas das tabelas e que são usadas para estimar os custos, também consideram o uso de CPU e I/O e o tamanho das tabelas utilizadas.

Page 19: OTIMIZADOR DE CONSULTAS Lílian Simão Oliveira. a otimização da consulta apresenta tanto um desafio como uma oportunidade, pois a otimização feita pelo.

Otimização baseada em Custo Porém, como este tipo de otimização é baseado em

estatísticas e pode gerar um resultado que talvez não seja o melhor. Isto acontece devido ao SGBD utilizar informações armazenadas que talvez estejam desatualizadas. Assim, é necessário que as funções que armazenam as informações das tuplas, índices, chaves e cardinalidade sejam atualizadas periodicamente. Não é viável realizar a atualização todas as vezes que acontece alguma alteração no banco, pois isto implica em alto custo, mas atualizando periodicamente, o SGBD manterá valores próximos aos reais.