Você está na página 1de 58

IMPLEMENTAO DE BANCO DE DADOS

Aula 10 - Otimizao

IMPLEMENTAO DE BANCO DE DADOS
TRANSAES

IMPLEMENTAO DE BANCO DE DADOS
Contedo Programtico desta aula
Aprender a criar Vises, Indices e
Sequences


IMPLEMENTAO DE BANCO DE DADOS
TRANSAES

IMPLEMENTAO DE BANCO DE DADOS
FASES DE EXECUO DE COMANDO
IMPLEMENTAO DE BANCO DE DADOS
Analise Sinttica

IMPLEMENTAO DE BANCO DE DADOS
Analisador Sinttico

IMPLEMENTAO DE BANCO DE DADOS
Analise Semntica

IMPLEMENTAO DE BANCO DE DADOS
Fluxo de Processamento

IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Gerao de Plano Lgico
IMPLEMENTAO DE BANCO DE DADOS
Otimizao de Consultas
IMPLEMENTAO DE BANCO DE DADOS
Otimizao de Consultas
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heurstica
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heurstica
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heursticas
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heurstica
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heurstica
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heurstica
IMPLEMENTAO DE BANCO DE DADOS
Otimizao Heurstica
IMPLEMENTAO DE BANCO DE DADOS
Avaliao de Custos
IMPLEMENTAO DE BANCO DE DADOS
Componentes de Custos
IMPLEMENTAO DE BANCO DE DADOS
Componentes de Custos
IMPLEMENTAO DE BANCO DE DADOS
Otimizador de consultas
Abordagens clssicas:
Otimizao por regras: Plano de execuo gerado
ao se aplicar heursticas tidas como eficientes
(independente de estatsticas). Por exemplo, o
otimizador poderia sempre escolher utilizar um ndice
que esteja disponvel sobre uma coluna.
Otimizao por custo: Determina que plano de
execuo o mais eficiente ao considerar diferentes
caminhos de acesso usando as estatsticas sobre os
objetos do esquema (tabelas e ndices) acessados
pelo comando SQL (mais eficiente e recomendado)
A otimizao por custo demanda estatsticas

IMPLEMENTAO DE BANCO DE DADOS
Planos de Execuo
O plano de execuo o roteiro que o SGBD segue para recuperar as
linhas especificadas pela consulta. Uma srie de detalhes sobre como
a consulta deve ser processada especificada no plano. Em especial,
quais operaes sero aplicadas para resolver a consulta e em que
ordem elas sero processadas.
O que especificado no plano de execuo:
Ordem de acesso s tabelas
Ordem de operaes de seleo, projeo e juno
ndices utilizados
Tipos de juno
Ordenaes
Tabelas intermedirias
Existem dois tipos bsicos de operao:
Mtodos de acesso (varreduras seqenciais e indexadas)
Outras operaes (junes, unies, ordenao, etc...)
IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em custo
IMPLEMENTAO DE BANCO DE DADOS
Query Transformer: Transforma uma consulta SQL
em uma expresso algbrica.
Estimator
Fator de seletividade
Cardinalidade
Custo (CPU + E/S + comunicao)
Plan Generator: Gera um conjunto de planos
equivalentes, porm com custos diferentes
Ordem de juno
Ordem dos operadores
Algoritmos de juno (sort-merge, nested loops, hash
join )
Otimizao baseada em custo
IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em custo
Principais caminhos de acesso
TABLE ACCESS (bom para baixa seletividade)
FULL SCAN
BY ROW ID
INDEX SCAN (bom para baixa seletividade)
Unique
Range
Full
Hash join
JOIN
Nested-Loop
Sort-Merge
Hash Join (no disponvel em otimizao baseada em regra)

IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em regra
Usa praticamente os mesmos caminhos de acesso
da otimizao baseada em custo
No contm HASH JOIN
Utiliza heursticas para gerar os planos de
execuo
Regras de comutatividade e associatividade
(A U C) JOIN (B U C) (A JOIN B) U C
Juno de seleo Seleo de juno
Seleo e projeo so antecipadas sobre a juno
Busca por ndices so preferidas
etc.
IMPLEMENTAO DE BANCO DE DADOS
Varredura Seqencial

IMPLEMENTAO DE BANCO DE DADOS
Varredura Indexada

IMPLEMENTAO DE BANCO DE DADOS
Varredura Indexada

IMPLEMENTAO DE BANCO DE DADOS
Varredura Indexada

IMPLEMENTAO DE BANCO DE DADOS
Ordenao (Sorting)


Operao bsica para diversas outras operaes
fsicas
Resolve a clusula ORDER BY
Se o conjunto a ser ordenado no cabe em memria,
esta operao pode ser muito cara
Pode ser utilizada em DISTINCT, UNION,
INTERSECTION, JOIN

IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em custo
Exemplos
SELECT *
FROM EMP
WHERE Name = Jackson
TABLE ACCESS FULL SCAN
SELECT *
FROM EMP
WHERE Empno = 7369
TABLE ACCESS BY INDEX ROW ID
INDEX UNIQUE SCAN (PK_EMP)
IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em custo
Exemplos
SELECT *
FROM PROJECT
WHERE PNAME LIKE 'Contas%'
TABLE ACCESS BY INDEX ROW ID
INDEX RANGE SCAN (SYS_C01)
SELECT *
FROM PROJECT
WHERE PNAME LIKE %Contas'
TABLE ACCESS FULL SCAN
IMPLEMENTAO DE BANCO DE DADOS
Junes



Os algoritmos clssicos utilizados em
junes so:
Loops Aninhados (Nested Loops Join)
Ordenao/Intercalao (Merge Join)
Hashing (Hash Join)

IMPLEMENTAO DE BANCO DE DADOS
Nested Loops




IMPLEMENTAO DE BANCO DE DADOS
Nested Loops




IMPLEMENTAO DE BANCO DE DADOS
Nested Loops




IMPLEMENTAO DE BANCO DE DADOS
Nested-Loops
SELECT *
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
IMPLEMENTAO DE BANCO DE DADOS
IMPLEMENTAO DE BANCO DE DADOS
IMPLEMENTAO DE BANCO DE DADOS
Merge Join
SELECT *
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
IMPLEMENTAO DE BANCO DE DADOS
IMPLEMENTAO DE BANCO DE DADOS
IMPLEMENTAO DE BANCO DE DADOS
Hash Join
SELECT *
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em custo
Exemplos
SELECT W.*
FROM EMPLOYEE E, WORKS_ON W
WHERE E.SSN = W.ESSN AND E.SALARY > 800
NESTED LOOPS
TABLE ACCESS FULL (WORKS_ON)
TABLE ACESS BY INDEX ROWID
INDEX UNIQUE SCAN (SYS_C01)
IMPLEMENTAO DE BANCO DE DADOS
Otimizao baseada em custo
Exemplos
SELECT W.*
FROM WORKS_ON W, EMPLOYEE E
WHERE E.SSN = W.ESSN AND E.SALARY > 800
NESTED LOOPS
TABLE ACCESS FULL SCAN (EMPLOYEE)
INDEX RANGE SCAN (SYS_C012)
/* Chave primria de WORKS_ON
IMPLEMENTAO DE BANCO DE DADOS
ORACLE - REGRAS
Rank Caminho de Acesso
1 Single row by ROWID
2 Single row by cluster join
3 Single row by hash cluster key with unique or
primary key
4 Single row by unique or primary key
5 Cluster join
6 Hash cluster key
7 Indexed cluster key
8 Composite index
9 Single-column index
10 Bounded range search on indexed columns
11 Unbounded range search on indexed columns
12 Sort-merge join
13 MAX or MIN of indexed column
14 ORDER BY on indexed column
15 Full table scan
55
IMPLEMENTAO DE BANCO DE DADOS
ORACLE COMPUTANDO ESTATSTICAS

56
IMPLEMENTAO DE BANCO DE DADOS
ORACLE ACESSO AO PLANO DE EXECUO

57
IMPLEMENTAO DE BANCO DE DADOS
TRANSAES

IMPLEMENTAO DE BANCO DE DADOS
Prxima Aula

Reviso para AV2

Você também pode gostar