Sei sulla pagina 1di 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

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

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, levandose em considerao a ordem de execuo entre eles Um bloco contm um nico comando SELECTFROM-WHERE, incluindo clusulas GROUP BY e HAVING, se houver
Introduo a Banco de Dados DCC 011

Exemplo de Traduo de uma Consulta SQL


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

SELECT FROM WHERE

LNAME, FNAME EMPLOYEE SALARY > C

SELECT FROM WHERE

MAX (SALARY) EMPLOYEE DNO = 5

LNAME, FNAME (SALARY>C(EMPLOYEE))

MAX SALARY

(DNO=5 (EMPLOYEE))

Introduo a Banco de Dados DCC 011

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

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;

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

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

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

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

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. 2. Usando a regra R1, desmembre a condio (conjuntiva) da operao de seleo. Usando as regras R2 e R6, reposicione as condies de seleo e juno de forma que elas possam ser aplicadas o mais cedo possvel. Usando as regras R5 e R9, reposicione as relaes de forma que condies de seleo mais restritivas possam ser aplicadas mais cedo. Usando a regra R12, converta as sequncias de operaes de seleo e produto cartesiano em junes. 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

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

Potrebbero piacerti anche