Estratgias de otimizao
Otimizao baseada em heursticas Otimizao baseada na estimativa de custo da consulta Otimizao semntica
Introduo a Banco de Dados DCC 011
MAX SALARY
(DNO=5 (EMPLOYEE))
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))
rvore de Consulta
PNUMBER, DNUM, LNAME, ADDRESS, BDATE (((PLOCATION=STAFFORD(PROJECT)) (DEPARTMENT)) DNUM=DNUMBER 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
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;
LNAME (PNAME=AQUARIUS AND PNUMBER=PNO AND ESSN=SSN AND BDATE>DEC-31-1957 (EMPLOYEE WORKS_ON PROJECT))
Exemplo: etapa 1
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
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
Exemplo: etapa 4
Exemplo: etapa 5
A cada passo, so mantidas apenas os atributos necessrios (operaes de projeo so deslocadas para baixo)
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
10
3.
4. 5.
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