Você está na página 1de 11

Processamento e Otimizao de

Consultas

Introduo a Banco de Dados DCC 011

Processo de Execuo de uma Consulta

Introduo a Banco de Dados DCC 011

1
Otimizao de Consultas SQL
 Em algumas linguagens de consulta, a estratgia
de execuo definida pela maneira como o
usurio (ou programador) expressa a consulta
 Em SQL, que uma linguagem declarativa,
apenas os resultados desejados so
especificados
 Portanto, a otimizao de consultas necessria
em SGBDs relacionais baseados em SQL

Introduo a Banco de Dados DCC 011

Otimizao de Consultas SQL


 Passos principais
 Traduo da consulta SQL para a lgebra
relacional
 Otimizao do resultado
 Estratgias de otimizao
 Otimizao baseada em heursticas
 Otimizao baseada na estimativa de custo da
consulta
 Otimizao semntica

Introduo a Banco de Dados DCC 011

2
Traduo de Consultas SQL para
Expresses da AR
 Consultas SQL so decompostas em blocos
 Cada bloco transformado em uma expresso
da lgebra relacional
 Os blocos so otimizados internamente, levando-
se em considerao a ordem de execuo entre
eles
 Um bloco contm um nico comando SELECT-
FROM-WHERE, incluindo clusulas GROUP BY e
HAVING, se houver

Introduo a Banco de Dados DCC 011

Exemplo de Traduo de uma


Consulta SQL
SELECT LNAME, FNAME
FROM EMPLOYEE
WHERE SALARY > ( SELECT MAX (SALARY)
FROM EMPLOYEE
WHERE DNO = 5);

SELECT LNAME, FNAME SELECT MAX (SALARY)


FROM EMPLOYEE FROM EMPLOYEE
WHERE SALARY > C WHERE DNO = 5

LNAME, FNAME (SALARY>C(EMPLOYEE)) MAX SALARY (DNO=5 (EMPLOYEE))


Introduo a Banco de Dados DCC 011

3
Otimizao Baseada em Heursticas
 Consultas so representadas internamente na forma de
uma rvore ou grafo
 rvores de consulta so preferidas para a otimizao pois
determinam a ordem de execuo das operaes
 Grafos de consulta indicam apenas as operaes e os respectivos
operandos envolvidos  portanto, existe apenas um grafo
correspondente a cada consulta
 Regras heursticas so usadas para alterar a representao
interna (rvore ou grafo) de uma consulta de modo a
otimizar a sua execuo
 Por exemplo: operaes de projeo e seleo so aplicadas antes
de uma juno
 O plano de execuo gerado determina a ordem em que
as operaes sero executadas e os recursos a serem
utilizados (por ex., ndices)
Introduo a Banco de Dados DCC 011

Exemplo Preliminar
Consulta Q2 (Cap. 5 e 8):
Para cada projeto localizado em Stafford, recupere o nmero do
projeto, o nmero do departamento responsvel e o ltimo nome, o
endereo 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:
PNUMBER, DNUM, LNAME, ADDRESS, BDATE (((
PLOCATION=STAFFORD(PROJECT))
DNUM=DNUMBER (DEPARTMENT)) MGRSSN=SSN (EMPLOYEE))

Introduo a Banco de Dados DCC 011

4
rvore de Consulta

PNUMBER, DNUM, LNAME, ADDRESS, BDATE (((


PLOCATION=STAFFORD(PROJECT))
DNUM=DNUMBER (DEPARTMENT)) MGRSSN=SSN (EMPLOYEE))
Introduo a Banco de Dados DCC 011

rvore Cannica

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;
Introduo a Banco de Dados DCC 011

5
Otimizao Heurstica
 Parte de uma rvore cannica, obviamente
ineficiente, mas fcil de ser construda
 No exemplo anterior, considerando-se que
 P tem 100 tuplas de 100 bytes
 D tem 20 tuplas de 50 bytes
 E tem 5000 tuplas de 150 bytes
os produtos cartesianos resultariam em 10 milhes
de tuplas de 300 bytes cada
 Transformaes a partir da rvore cannica usam
regras de equivalncia entre expresses da lgebra
relacional para melhorar progressivamente o plano
de execuo da consulta
Introduo a Banco de Dados DCC 011

Exemplo
Consulta SQL:
SELECT LNAME
FROM EMPLOYEE, WORKS_ON, PROJECT
WHERE PNAME = AQUARIUS AND PNUMBER=PNO AND
ESSN=SSN AND BDATE > DEC-31-1957;

lgebra Relacional (Expresso Cannica):


LNAME (
PNAME=AQUARIUS AND PNUMBER=PNO AND ESSN=SSN AND BDATE>DEC-31-1957
(EMPLOYEE WORKS_ON PROJECT))

Introduo a Banco de Dados DCC 011

6
Exemplo: etapa 1

A rvore cannica
construda
diretamente a
partir da consulta
SQL

Introduo a Banco de Dados DCC 011

Exemplo: etapa 2

A condio de seleo
desmembrada e as duas
operaes de seleo
(sobre BDATE e PNAME)
so aplicadas antes dos
produtos cartesianos,
para reduzir o nmero
de tuplas resultantes

Introduo a Banco de Dados DCC 011

7
Exemplo: etapa 3

As posies das relaes


EMPLOYEE e PROJECT
so trocadas para que a
condio de seleo
mais restritiva
(PNAME=Aquarius)
seja executada primeiro

Introduo a Banco de Dados DCC 011

Exemplo: etapa 4

Produtos cartesianos
seguidos de seleo
so substitudos por
junes

Introduo a Banco de Dados DCC 011

8
Exemplo: etapa 5

A cada passo, so
mantidas apenas os
atributos necessrios
(operaes de projeo
so deslocadas para
baixo)

Introduo a Banco de Dados DCC 011

Regras de Transformao

 R1. Cascata de selees:


<cond1 E cond2 E ... E condn>(R) =
<cond1>(<cond2>(... <condn>(R))
 R2. Comutatividade de selees:
<cond1>(<cond2>(R)) = <cond2>(<cond1>(R))
 R3. Cascata de projees:
<lista1>(<lista2>(R)) = <lista1>(R)
 R4. Comutatividade da seleo e projeo
<lista>(<cond>(R)) = <cond>(<lista>(R))

Introduo a Banco de Dados DCC 011

9
Regras de Transformao (cont.)
 R5. Comutatividade da juno e do produto
cartesiano
RS=SR R S=S R
 R6. Comutatividade da seleo e juno ou
produto cartesiano ( = { , })
<cond>(R S) = (<cond>(R)) S
 R7. Comutatividade da projeo e juno ou
produto cartesiano ( = { , })
<lista>(R S) = (<listaR>(R)) (<listaS>(S))
 R8. Comutatividade da unio e da interseo
RS=SR RS=SR

Introduo a Banco de Dados DCC 011

Regras de Transformao (cont.)


 R9. Associatividade da juno, produto cartesiano,
unio e interseo ( = { , , , })
(R S) T = R (S T)
 R10. Comutatividade da seleo e das operaes
de conjunto (unio, interseo e diferena)
<cond>(R S) = <cond>(R) <cond>(S)
 R11. Comutatividade da projeo e unio
<lista>(R S) = <lista>(R) <lista>(S)
 R12. Converso da sequncia seleo/produto
cartesiano em juno
c(R S) = R c A
Introduo a Banco de Dados DCC 011

10
Passos para Otimizao de uma
rvore Cannica do Tipo SPJ
1. Usando a regra R1, desmembre a condio (conjuntiva)
da operao de seleo.
2. Usando as regras R2 e R6, reposicione as condies de
seleo e juno de forma que elas possam ser aplicadas
o mais cedo possvel.
3. Usando as regras R5 e R9, reposicione as relaes de
forma que condies de seleo mais restritivas possam
ser aplicadas mais cedo.
4. Usando a regra R12, converta as sequncias de
operaes de seleo e produto cartesiano em junes.
5. Usando as regras R3, R4 e R7, desmembre a lista de
atributos da operao de projeo de forma que
operaes de projeo especficas possam ser
executadas mais cedo.
Introduo a Banco de Dados DCC 011

Exerccio
Seja o banco de dados de uma livraria representado pelo seguinte esquema relacional:

Editora(CodEditora,NomeEditora)
Livro(CodLivro,Titulo,Autor,Assunto,AnoPub,CodEditora)
Instituicao(CodInst,NomeInst,Sigla,Local)
Adotado-por(CodLivro,CodInst,AnoAdocao)

Dada a consulta SQL

SELECT NomeInst FROM Instituicao


WHERE CodInst IN
(SELECT CodInst FROM Adotado-por
WHERE AnoAdocao = 2007 AND CodLivro IN
(SELECT CodLivro FROM Livro
WHERE Assunto = Portugues AND CodEditora IN
(SELECT CodEditora FROM Editora
WHERE NomeEditora = Editora Campus)))

reescreva-a de forma no-aninhada, gere a sua rvore cannica e, usando as regras de


transformao, derive a rvore de consulta que corresponda sequncia de operaes
da lgebra relacional mais eficiente para a sua execuo.
Introduo a Banco de Dados DCC 011

11

Você também pode gostar