Escolar Documentos
Profissional Documentos
Cultura Documentos
Optimização do desempenho
Estrutura do capítulo
Introdução
Restrições de integridade
Indexação
Optimização de consultas SQL
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 2
Cap.2 – Optimização do desempenho
Introdução
De que depende o desempenho
Carga de trabalho
Throughput
Recursos
Optimização
Contenção
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 3
Cap.2 – Optimização do desempenho
Introdução
Definição de desempenho
optimização dos recursos para aumentar o
throughput e minimizar a contenção,
permitindo a realização da maior carga de
trabalho possível
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 4
Cap.2 – Optimização do desempenho
Introdução
Melhorar o desempenho
Príncipio de Pareto - regra 80/20
80% dos resultados são obtidos com 20% do
esforço
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 5
Cap.2 – Optimização do desempenho
Introdução
Monitorização vs. Gestão
Identificar
problemas
FIND IT
Determinar
soluções
ANALYZE IT
Optimizar
ambiente
Monitorizar
FIX IT
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 6
Cap.2 – Optimização do desempenho
Introdução
Reativo vs. Proativo
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 7
Cap.2 – Optimização do desempenho
Introdução
Desempenho no desenvolvimento
Custo de alteração
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 8
Cap.2 – Optimização do desempenho
Introdução
Tipos de Optimização
Sistema (DBMS): memória, disco,
recursos, configurações, S.O., software de
rede,…
Base de dados: desenho físico,
normalização, armazenamento, nº tabelas,
índices definidos, parâmetros,…
Aplicação: código SQL, ineficiência de
outras linguagens (java, C++, Cobol)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 9
Cap.2 – Optimização do desempenho
Restrições de integridade
Tipos de restrições
Triggers
Ativação/Desativação e Eliminação
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 10
Cap.2 – Optimização do desempenho
Restrições de integridade
Restrições declarativas (1)
Tipos de validação
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 11
Cap.2 – Optimização do desempenho
Restrições de integridade
Restrições declarativas (2)
Tipos de validação
Não Adiável
Adiável (deferrable)
Inicialmente imediatas
Inicialmente adiadas (p.ex. entrada de dados em
tabelas com chaves estrangeiras)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 12
Cap.2 – Optimização do desempenho
Restrições de integridade
Restrições declarativas (3)
Ativar/Desativar
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 13
Cap.2 – Optimização do desempenho
Restrições de integridade
Restrições declarativas (4)
Ativar
ALTER TABLE tabela {ENABLE [VALIDATE | NOVALIDATE] }
{CONSTRAINT restrição | PRIMARY KEY | UNIQUE (coluna(s))}
[USING INDEX cláusula_índice]
[EXCEPTIONS INTO[schema.nome_tabela]];
Desativar
ALTER TABLE tabela DISABLE
{CONSTRAINT restrição|PRIMARY KEY|UNIQUE(coluna(s))}[CASCADE];
Eliminar
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 14
Cap.2 – Optimização do desempenho
Restrições de integridade
Restrições declarativas - exemplo
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 15
Cap.2 – Optimização do desempenho
Restrições de integridade
Triggers
Ativar
ALTER TRIGGER [schema.]nome_trigger ENABLE;
ALTER TABLE [schema.]nome_tabela ENABLE ALL TRIGGERS;
Desativar
Eliminar
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 16
Cap.2 – Optimização do desempenho
Restrições de integridade
Triggers - exemplo
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 17
Cap.2 – Optimização do desempenho
Indexação
Definição
Estrutura em árvore que permite o acesso direto mais
rápido a, pelo menos, uma coluna de uma tabela
Aceleram o acesso aos dados
Podem garantir a unicidade dos dados
Independentes (lógica e fisicamente) dos dados da
tabela a que estão associados
Sofrem alterações automáticas sempre que há
inserção, atualização e/ou eliminação de dados na
tabela a que se encontram associados
Pioram o desempenho em comandos DML
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 18
Cap.2 – Optimização do desempenho
Indexação
Implementação (1)
Uma das melhores técnicas para conseguir obter um
bom desempenho da BD
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 19
Cap.2 – Optimização do desempenho
Indexação
Implementação (2)
Uma tabela pode ter vários índices
Que colunas indexar?
muito acedidas, especialmente com WHERE (SQL)
com muitos valores nulos, mas os valores não nulos são
acedidos pela maioria das pesquisas
FOREIGN KEYS
PRIMARY KEYS
CANDIDATE KEYS
JOINs, ORDER BY, GROUP BY, UNION e DISTINCT
onde a maioria dos valores são distintos
com uma gama de valores vasta
Colunas do tipo LONG e LONG RAW não são indexáveis!
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 20
Cap.2 – Optimização do desempenho
Indexação
Implementação (3)
Minimizar o n.º de índices
(consultas versus operações DML)
Ordem de indexação de colunas
Colocar primeiro as colunas usadas com mais frequência
Exemplo
Várias consultas utilizam TIPO_PRODUTO
Poucas consultas utilizam TIPO_PRODUTO e
COR_PRODUTO
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 21
Cap.2 – Optimização do desempenho
Indexação
Custo
Overhead na atualização no índice sempre que ocorrem
inserções, atualizações e eliminações de linhas na tabela
Espaço adicional ao armazenamento dos índices
pior cenário: índices a ocupar mais espaço que os dados da
tabela
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 22
Cap.2 – Optimização do desempenho
Indexação
Classificação
Lógica
Simples ou composto
Único ou duplicado
Física
Particionado ou não-particionado
B-tree [reverse key] ou bitmap
Function-based
incluem colunas transformadas por uma função
incluem uma expressão (ex:col1+col2)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 23
Cap.2 – Optimização do desempenho
Indexação
Índices b-tree
Estrutura
raiz
ramos
folhas
Formato das entradas de índices (folhas)
cabeçalho
Estado (lock ou unlock)
n.º de colunas
Dados (índices simples)
tamanho coluna (bytes)
valor coluna
ROWID das linhas que contêm determinado valor
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 24
Cap.2 – Optimização do desempenho
Indexação
Exemplo índice b-tree (1)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 25
Cap.2 – Optimização do desempenho
Indexação
Exemplo índice b-tree (2)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 26
Cap.2 – Optimização do desempenho
Indexação
Índices bitmap
Estrutura
Organizada como nos b-Tree
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 27
Cap.2 – Optimização do desempenho
Indexação
Exemplo índice bitmap
folhas
“Este” 101100 “Oeste” 010010 “Sul” 000001
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 28
Cap.2 – Optimização do desempenho
Indexação
Índices b-tree vs. bitmap
B-TREE BITMAP
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 29
Cap.2 – Optimização do desempenho
Indexação
Criação de índices (1)
Implícita
Restrições PRIMARY KEY e UNIQUE KEY
Explícita
Comando SQL para b-tree
CREATE [UNIQUE] INDEX [schema.]nome_indice
ON [schema.]nome_tabela
(coluna [ASC | DESC] [, ...] )
[TABLESPACE nome_tab]
[STORAGE cláusula_armazenamento]
[LOGGING | NOLOGGING] [NOSORT] ;
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 30
Cap.2 – Optimização do desempenho
Indexação
Criação de índices (2)
Explícita
Comando SQL para bitmap
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 31
Cap.2 – Optimização do desempenho
Indexação
Exemplos de criação de índices (1)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 32
Cap.2 – Optimização do desempenho
Indexação
Exemplos de criação de índices (2)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 33
Cap.2 – Optimização do desempenho
Indexação
Reconstrução de índices
Mover o índice para um tablespace diferente
Libertar espaço de memória das entradas eliminadas
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 34
Cap.2 – Optimização do desempenho
Indexação
Verificar validade de índices
Deteção de blocos corrompidos
Verificação do n.º de linhas eliminadas
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 35
Cap.2 – Optimização do desempenho
Indexação
Eliminação de índices
Antes do carregamento de dados na tabela
Quando não se obtém melhoria de velocidade
Quando não são utilizados
Quando se encontram inválidos
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 36
Cap.2 – Optimização do desempenho
Indexação
Informação no dicionário de dados
Vistas:
USER_INDEXES
USER_IND_COLUMNS
INDEX_STATS
USER_OBJECTS
USER_TABLESPACES
USER_SEGMENTS
USER_EXTENTS
DBA_INDEXES
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 37
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 38
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 39
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 40
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 41
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 42
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 43
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 44
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 45
Cap.2 – Optimização do desempenho
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 46
Cap.2 – Optimização do desempenho
Bibliografia
Oracle 8i – Curso completo, Luís Moreno Campos, FCA,
Parte VI, pág. 547-570 e Parte IX, pág. 707-733
Oracle 11g:
https://docs.oracle.com/cd/E11882_01/server.112/e25
494/indexes.htm#ADMIN11710 (21 Managing indexes)
Oracle 19c:
https://docs.oracle.com/en/database/oracle/oracle-
database/19/admin/managing-indexes.html
(21 Managing indexes)
© Olga Craveiro, Catarina Silva Sistemas de Bases de Dados, ESTG- IPLeiria 2020/21 47