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

Post on 18-Apr-2015

105 views 2 download

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

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 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.

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.

Passos do SGBD

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

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

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)

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:

Árvore de consulta

Árvore Canônica

Exemplo 2

Exemplo2 – Etapa 1

Exemplo 2- Etapa 2

Exemplo 2- Etapa 3

Exemplo 2 – Etapa 4

Exemplo 2 – Etapa 5

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;

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.

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.