BD9 Indexes Optimizacao
BD9 Indexes Optimizacao
BD9 Indexes Optimizacao
Indexação e Optimização
Introdução - Motivação
1
5/2/13
Índices
2
5/2/13
Índices
Tipos Genéricos
• Single-Level Ordered
• Multi-Level
Single-Level Ordered
3
5/2/13
• Primary Index
§ Indexa um atributo chave da relação (não se repete)
• Clustered Index
§ Indexa um atributo que pode ter valores duplicados
§ Os atributos estão agrupados
• Secondary Index
§ Indexa outros atributos (chave candidata ou não chave)
§ Podemos ter vários índices deste tipo
7
Nota: Só podemos ter um primary ou clustered
7
Tuplos
armazenados
em blocos
(páginas) de
tamanho fixo
4
5/2/13
10
5
5/2/13
Multilevel Index
11
two-level
primary index
12
12
6
5/2/13
Árvore de Pesquisa
13
p=3
14
14
7
5/2/13
15
B-Tree
16
16
8
5/2/13
SQL - Index
17
• Recomendação:
§ estudar o tipo de consultas das aplicações e/ou utilizar registos de log (histórico de18
queries) para ajudar na decisão.
18
9
5/2/13
Seleção de Índices –
Factor “Organização Física dos Dados”
• Os tuplos estão distribuídos por várias páginas (blocos).
• A pesquisa de um único tuplo obriga a carregar em
memória toda a página onde ele se encontra.
§ Operações de I/O são bastante onerosas em termos temporais
Recomendação:
§ Tentar perceber se determinado índice obriga a carregar muitas (ou
poucas) páginas em memória num processo de pesquisa
§ Índices que necessitam de carregar poucas páginas da relação, para
19
encontrar o tuplo, reduzem significativamente o tempo de pesquisa
19
20
10
5/2/13
Seleção de Índices
Caso de Estudo
21
21
Cenário
22
11
5/2/13
Pressupostos
23
Tabela de Custos
Action No Index Star Index Movie Index Both Index
Q1 10 4 10 4
Q2 10 10 4 4
I 2 4 4 6
Cost Formula 2 + 8p1 + 8p2 4 + 6p2 4 + 6p1 6 - 2p1 - 2p2
P1 e P2 – fracção de tempo em que ocorre Q1 e Q2
Fracção de tempo em que fazemos I é: 1 - P1 - P2
• No index:
§ Q1 e Q2: Acesso a toda a relação (full scan) - 10 acessos de leitura
§ I: 1 acesso para consulta + 1 acesso para escrita
• Star Index:
§ Q1: 1 acesso ao index + 3 acessos páginas da relação
§ Q2: No index – custo 10
§ I: 2 acessos página do índice + 2 acesso páginas dos dados da relação
• Movie Index: simétrico de Star index
• Both Index:
§ Q1 e Q2: 1 acesso ao index + 3 acessos páginas da relação 24
§ I : (2 leitura + 2 escritas) para cada índice (total de 4) + 2 acessos à página os dados
24
12
5/2/13
Escolha de Índice(s)
Exemplos: Action
2 + 8p 1 + 8p 2
Star Index
4 + 6p 2
Movie Index
4 + 6p 1
Both Index
6 - 2p 1 - 2p 2
1. P1 = P2 = 0.1
§ Menor custo: 2 + 8p1 + 8p2
§ Opção: No Index
2. P1 = P2 = 0.4
§ Menor custo: 6 - 2p1 - 2p2
§ Opção: Indexar starName e (movieTitle, movieYear)
3. P1 = 0.5 e P2 = 0.1
§ Menor custo: 4 + 6p2
§ Opção: Indexar só starName 25
25
Índices
SQL Server
26
26
13
5/2/13
28
28
14
5/2/13
29
29
30
15
5/2/13
Non-Clustered Indexes
sobre Heap
(Exemplo)
31
31
Non-Clustered Indexes
sobre
Clustered Table
(Exemplo)
32
32
16
5/2/13
33
34
34
17
5/2/13
• Unique
§ A index key é única (não tem valores duplicados)
§ Por defeito, a criação de uma chave primária cria
automaticamente um unique clustered index
• Opcionalmente, podemos criar um unique non-clustered
index
• Composite
§ Índice com vários atributos
§ A ordem dos atributos importa
• Um índice só é considerado como podendo ser usado se a
primeira coluna faz parte da query
• Assim, podemos ter necessidades de índices com o mesmo
atributo em ordem diferente.
35
35
• Filtered
§ Permite utilização da cláusula WHERE no CREATE INDEX
§ Só disponível para non-clustered index
§ Só indexamos parte dos tuplos da relação
36
18
5/2/13
-- FILTERED Index
CREATE INDEX IxActiveProduction ON Production.WorkOrders
(WorkOrderID, ProductID) WHERE Status = ‘Active’;
37
38
19
5/2/13
39
39
40
20
5/2/13
B-Tree Tuning
• Best Practice:
§ Compromisso entre a compactação dos dados (menor desperdício de
espaço) e a ocorrência de page splits:
• Utilizar fill factor próximo de 100% se temos inserções ordenadas
• 65-85% se tivermos mais inserções no meio da B-Tree 41
41
Desfragmentação de Índices
42
21
5/2/13
43
43
Problemas de Desempenho?
44
44
22
5/2/13
45
46
46
23
5/2/13
Resumo
• Conceito de Índice
• Tipos de Indexação
§ Critérios de seletividade
• Estruturas B-Tree
47
47
SQL Server
Tools
48
48
24
5/2/13
49
49
25