Você está na página 1de 2

Bancos de Dados: Algoritmos para processamento e otimizao de con...

1 de 2

http://www.revistabw.com.br/revistabw/algoritmos-para-processament...

REVISTA BRASILEIRA DE WEB - TECNOLOGIA

Bancos de Dados: Algoritmos para processamento


e otimizao de consultas

Introduo Informtica

Contedos Gerais
Uma consulta escrita em uma linguagem de consulta, como SQL, lida pelo SGBD, analisada e validada. As tcnicas
utilizadas so as mesmas que so aprendidas em Teoria dos Compiladores. Inicialmente so verificados os tokens

Bancos de Dados

(smbolos), enquanto o analisador sinttico verifica se o cdigo est escrito de acordo com as regras da linguagem. A
consulta validada , ento, traduzida para uma expresso em lgebra relacional estendida, representada por uma rvore

Engenharia de Requisitos

de consulta, que ento otimizada pelo otimizador de consultas. Um SGBD implementa diversos mtodos de acesso
para realizar uma consulta, e ao se escrever um cdigo e execut-lo, o otimizador de consultas estimar o custo de cada

Engenharia de Software

mtodo de acesso e aplicar aquele com o menor custo previsto.

Algoritmos para Seleo


Existem diversos algoritmos para executar um comando SELECT, que uma operao de pesquisa para localizar

Introduo Internet
Probabilidade e Estatstica

arquivos em disco que atendam a uma determinada condio proposta.


Os mtodos de pesquisa mais simples so aqueles que no possuem uma condio estabelecida ou que possuem

UML

apenas uma condio simples. So conhecidos como varreduras de arquivos porque varrem registros em busca daqueles
que cumpram uma determinada condio.

Programao

Pesquisa Linear: recupera cada registro do arquivo e testado se os valores dos atributos correspondem a condio
dada.

Lgica de Programao

Pesquisa binria: se o arquivo ordenado e a condio envolvem a comparao com um atributo chave, a
pesquisa binria pode ser utilizada para agilizar a busca.

Linguagem C

ndice primrio ou chave hash para um nico registro: se a condio de seleo envolver a comparao de
igualdade com um atributo chave, pode ser utilizado o ndice primrio ou uma chave hsh para recuperar os dados.

Linguagem Java

Estes mtodos, no entanto, retornam um nico registro.


Linguagem Python
ndice primrio para diversos registros: se a condio de seleo envolver comparaes de >, <, <= e >= com um
campo chave de um ndice primrio, o ndice pode ser utilizado para encontrar o registro que satisfaz a igualdade e

Linguagem R

recuperar os registros seguintes de acordo com a operao.


ndice de agrupamento: se a condio de seleo envolver comparaes de igualdade com um atributo no chave,
um ndice de agrupamento pode ser utilizado para recuperar os registros que atendem a condio.

Sistemas Operacionais

Os mtodos de pesquisa mais complexas, isto , compostas por vrias condies simples, ligadas por conectivos, podem
utilizar outras tcnicas de busca. Quando as ligaes entre duas condies simples so feitas atravs de AND chamamos

Linux

de condio conjuntiva. As seguintes tcnicas podem ser utilizadas:


Seleo conjuntiva utilizando ndice individual: se uma condio isolada permitir um ndice que permita utilizar as

Matemtica

tcnicas anteriores, use a condio para recuperar os registros e depois verifique se cada registro atende as
condies restantes.

lgebra Linear

Seleo conjuntiva utilizando ndice composto: se dois ou mais atributos formam uma chave composta, pode-se
utilizar um ndice diretamente.

Clculo Diferencial e Integral

Quando as ligaes entre as condies so feitas atravs do conectivo OR, chamamos a condio de disjuntiva. Este tipo
de condio mais difcil de ser otimizada pois demanda que cada condio disjuntiva possua atributos indexados (para

Outros Sites

utilizar as tcnicas anteriores), seno a tcnica da pesquisa linear ser geralmente utilizada.

Algoritmos de Juno

Revista Brasileira de Web- Tecnologia

A juno uma das operaes mais demoradas em uma consulta, pois envolve a unio de dois ou mais arquivos, o que
mais custoso em termos de busca e memria. Os principais algoritmos para implementar juno so:
Juno de loop (ou bloco aninhado): recupera cada registro na tabela A e verifica se para cada elemento da

Escreva Certo
Index Cristo

tabela B a condio da juno satisfeita (semelhante a um for dentro de for).


Juno de loop nico: se existe um ndice ou chave hash para um dos atributos da juno na tabela A, recupera
todos os registros da tabela B, e posteriormente utilize o ndice ou chave hash para recuperar os registros que
atendem a juno.
Juno ordenao-intercalao: se as tabelas A e B esto fisicamente ordenados, pode-se correr os registros
simultaneamente e recuperar os dados que atendem a juno. Se no estiverem ordenados, eles podem ser atravs
de uma ordenao externa.
Juno hash: os registros de A e B so separados em arquivos menores utilizando a mesma funo hash (fase de
particionamento). Na segunda fase (fase de investigao) casa-se os registros correspondentes.

Tcnicas heursticas de otimizao de consulta


Existem tcnicas que permitem modificar a representao interna de uma consulta de modo a melhorar o seu
desempenho. Um SGBD pode gerar diversas estruturas diferentes de rvores para uma mesma consulta e as tcnicas
heursticas buscam criar uma reordenao da rvore de modo a obter uma estrutura otimizada. A ideia principal que
primeiro devem ser executadas as operaes que reduzem os resultados intermedirios de uma consulta.
Inicialmente importante definir que as operaes de seleo e projeo devem ser aplicadas antes de operao de
juno e outras operaes binrias.
Executar as operaes de seleo e projeo o mais cedo possvel.
Operaes de seleo e juno mais restritivas devem ser realizadas o mais cedo possvel.

07/06/2015 15:46

Bancos de Dados: Algoritmos para processamento e otimizao de con...

2 de 2

http://www.revistabw.com.br/revistabw/algoritmos-para-processament...

Custo de execuo de uma consulta


Um otimizador de consultas ao processar uma consulta, tambm estima os custos envolvidos para realizar uma
determinada busca e escolhe a estratgia com custo mais baixo. Em geral, esta estimativa feita baseada na melhor
opo mdia, pois um SGBD gastaria muito tempo considerando todas as estratgias para buscar a melhor possvel.
Ao considerar os custos de consulta, busca-se avaliar os seguintes quesitos:
Custo de acesso ao armazenamento secundrio: isto , o custo de leitura e gravao entre os discos e a
memria principal.
Custo de armazenamento em disco: isto , o custo de armazenamento de arquivos intermedirios gerados para
uma consulta.
Custo de computao: isto , o custo de processamento na CPU.
Custo de uso de memria: isto , a quantidade de memria a ser utilizada na execuo de uma consulta.
Custo de comunicao: isto , o custo de envio de uma consulta e dos seus resultados do local onde est
armazenado o banco de dados at onde a consulta foi originada.

Leia mais contedos sobre Bancos de Dados

Voltar para a Pgina Anterior

Para citar este artigo


REVISTABW. Bancos de Dados: Algoritmos para processamento e otimizao de consultas.Revista Brasileira de Web.
Disponvel em http://www.revistabw.com.br/revistabw/algoritmos-para-processamento-e-otimizacao-de-consultas/. Criado
em: 03/01/2013. ltima atualizao: 07/03/2014. Visitado em: 07/06/2015

Voc tambm deveria ler


Banco de Dados: Modelo Relacional
Conceitos iniciais e acesso via linha de comando em SQLite
Bancos de Dados Distribudos
Utilizando a Wikipdia como um Banco de Dados
Redundant Array of Independent Drives (RAID)

Tags: bancos de dados, raid

Perguntas e Respostas sobre

Top Universidades Referncia em TI

Tecnologia

no Brasil

Android Enthusiasts

ICMC USP

Stackoverflow (Programao)

IME USP

Recursos

Hora Legal Brasileira

Vagas em TI

APinfo
Go Talent

Downloads teis: Adobe Acrobat PDF - VLC - Music and Video


O contedo da Revista Brasileira de Web licenciado sob uma Licena Creative Commons Atribuio 3.0 Brasil, exceto quando especificado claramente em contrrio. Este um site de contedos
diversos e dicas gerais e no substitui a consultoria de um profissional devidamente qualificado. Isto significa que os assuntos aqui abordados possuem carter geral e podem no ser adequados no
seu caso. Leia nossos Termos de Uso e Privacidade .

07/06/2015 15:46