Sunteți pe pagina 1din 5

Processamento de Consultas Diferentes tcnicas podem ser usadas para processar, otimizar e executar consultas de alto nvel, como

as consultas feitas usando SQL. Uma consulta deve ser examinada (scanner), analisada (parser) e validada. O scanner identifica os componentes da linguagem ( tokens) no texto da consulta, enquanto o parser checa a sintaxe da consulta para determinar se esta foi formulada seguindo as regras de sintaxe (regras de gramtica) da linguagem. A consulta tambm ser validada, atravs da checagem de que todos os nomes de atributos e tabelas so vlidos e semanticamente significativos. Uma representao interna da consulta criada, geralmente usando uma estrutura de rvores ou grafos, chamada de rvore de consulta ou grafo de consulta. O SGBD deve ento determinar uma estratgia de execuo para recuperao dos resultados da consulta, dos arquivos internos do banco de dados. Uma consulta tipicamente possui vrias possveis estratgias de execuo, e o processo para escolher dentre elas uma melhor conhecido como otimizao de consultas. Duas abordagens so usadas no processamento de consultas: utilizao de regras heursticas e estimativa de custo. Usualmente, estas duas abordagens so combinadas na otimizao de uma consulta. Portanto a otimizao envolve: determinao de uma expresso equivalente mais eficiente, e seleo da "melhor" estratgia de processamento para a consulta (plano de acesso). Passos do processamento de consultas de alto nvel:
Consulta numa linguagem de alto nvel SCANNER, PARSER E VALIDAO Forma intermediria da consulta OTIMIZADOR DE CONSULTAS Plano de acesso (ou plano de execuo) GERADOR DE CDIGO Cdigo para executar a consulta PROCESSADOR DO BANCO DE DADOS Resultado da consulta

23

Utilizao de heursticas para otimizao de consultas: Exemplo de uma rvore de consulta:

Pnumber,Dnum, Lname, Address, BDate ((( PLocation = Stafford (Project)) DNum=DNumber (Department)) MGRSsn=Ssn (Employee))

Correspondente consulta SQL: SELECT Pnumber,Dnum, Lname, Address, Bdate FROM Project, Department, Employee WHERE PLocation = Stafford AND Dnum=Dnumber AND MGRSsn=Ssn; As rvores de representao desta consulta so: 1a opo:

Pnumber,Dnum, Lname, Address, BDate

MGRSsn=Ssn

DNum=Dnumber

Employee

PLocation = Stafford

Department

Project

2a opo:

Pnumber,Dnum, Lname, Address, BDate

PLocation = Stafford AND MGRSsn=Ssn AND DNum=Dnumber

x x
Project Department Employee

24

Estratgia bsica: 1) Execute as operaes de seleo e projeo o mais cedo possvel 2) Execute outras transformaes (cascata de seleo ou projeo, comutatividade de junes, associatividade de junes, etc) que permitam utilizar a regra acima ou reduzam o tamanho das relaes intermedirias.

Regras de transformaes para operaes da AR: 1) Cascata de selees: C1 and C2 and...(R) 2) 3) 4) 5) 6) 7) 8)

C1(C2(...(R)) Comutatividade de selees: C1(C2((R)) C2(C1((R)) Cascata de projees: L1(L2 (...(R)) L1(R) Comutatividade entre selees e projees: A(C (R)) C( A(R)) Comutatividade de junes: R C S S C R Comutatividade entre selees e junes: C (R S) (C(R)) S Comutatividade entre projees e junes: L(R S) A(R) B(S) Associatividade entre junes: (R S) T R (S T)

Exemplo de gerao de rvore de consulta: SELECT LName FROM Employee, Works_on, Project WHERE PName = Aquarius AND PNumber = Pno AND Essn = Ssn AND BDate > 13/12/70 1o passo: rvore cannica

LName

PName = Aquarius AND PNumber = Pno AND Essn = Ssn AND BDate > 13/12/70

x x
Employee Project

Works_on

25

2o passo: mover operaes de seleo para baixo na rvore

LName

PNumber = Pno

x
Essn = Ssn

PName = Aquarius

x
BDate>13/12/70

Project Works_on

Employee

3o passo: colocar primeiro o select que mais restritivo

LName

Essn = Ssn

x
PNumber = Pno

BDate>13/12/70

x
PName= Aquarius

Employee Works_on

Project

26

4o passo: colocar junes

LName

Essn = Ssn

PNumber = Pno

BDate>13/12/70

PName= Aquarius

Works_on Employee

Project

5o passo: colocar projees

LName

Essn = Ssn

Essn
PNumber = Pno

Ssn, LName

BDate>13/12/70

PNumber

Essn, Pno

Employee

PName= Aquarius

Works_on

Project

27

S-ar putea să vă placă și