Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2...

77
1 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro Universidade de Fortaleza (UNIFOR) Secretaria da Fazenda do Estado do Ceará (SEFAZ-CE) [email protected] [email protected] Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD 2009 2/113 Contexto VLDB Vários GB de dados terabytes ou terrorbytes cartões de crédito, correios expressos Caso Petrobras coorporativo anos atrás 5K tabelas e índices + 2K views Algumas tabelas com mais de 50M tuplas 20 consultas por minuto 12K usuários (200 simultâneos) SAP R/3 “básico” 16K tabelas e 19K índices!

Transcript of Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2...

Page 1: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

1

Tuning e Self-Tuning de Bancos de Dados

José Maria Monteiro

Universidade de Fortaleza (UNIFOR)

Secretaria da Fazenda do Estado do Ceará (SEFAZ-CE)

[email protected]

[email protected]

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 2/113

Contexto VLDB

Vários GB de dados terabytes ou terrorbytes

cartões de crédito, correios expressos

Caso Petrobras coorporativo anos atrás 5K tabelas e índices + 2K views

Algumas tabelas com mais de 50M tuplas

20 consultas por minuto

12K usuários (200 simultâneos)

SAP R/3 “básico” 16K tabelas e 19K índices!

Page 2: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

2

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 3/113

Tuning de Bancos de Dados

Sintonia ou ajuste fino

“Realizar ajustes em um sistemas de banco de dados de forma a obter um melhor tempo de resposta e/ou aumentar a vazão (throughput) para determinada aplicação”

=> Buscar um bom desempenho em um sistema de banco de dados existente

Hipótese: HW e SW não mudam!

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 4/113

(1)insert into SALES (prodNum, date, qty, value)

values (4, current_timestamp, 20, 348);

(2)select prodNum, date, sum(value) as total

from SALES

where value > 1500000 and

date between ‘20040101’ and ‘20040131’

group by prodNum, date;

Indices para uma aplicação que contém estas(e possivelmente muitas outras…) cláusulas SQL?

Problema típico

Page 3: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

3

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 5/113

Problema simples?

update venda

set valor = valor -1

where valor > 2375000;

Índices ajudam ou atrapalham?

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 6/113

Princípios de Tuning (Shasha)

Pensar globalmente, fixar localmente

80 x 20: qual consulta é responsável?

Particionar para resolver gargalos

Espaço, transações

Start-up tem custo alto, execução não

Orientado a conjuntos!

Ao servidor o que é do servidor

triggers

Esteja pronto para trade-offs

Cobertor curto!

Page 4: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

4

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 7/113

Problemas de sintonia

Seleção de índices

Alocação de dados

Controle de carga (ajuste de MPL)

Política de substituição de páginas em memória

Ajuste de tamanhos/quantidades de buffers

Refino automático de estatísticas

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 8/113

Tuning

Dificuldades:

Perceber que um recurso está sendo mal

utilizado => monitoramento é parte

fundamental do processo

Localizar e entender a verdadeira fonte do

problema => Mais de 90% do tempo para

resolução de problemas de desempenho é

gasto no diagnóstico.

Page 5: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

5

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 9/113

O que é preciso saber?

A atividade de tuning envolve:

Hardware e sistemas operacionais

Gerência de memória e acesso a discos

Controle de concorrência e recuperação

Uso de índices adequados

Otimização e reescrita de consultas

Projeto de banco de dados adequado

Ajuda conhecer SGBDs específicos!

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 10/113

Agenda

o Introdução e Motivação

o Conceitos e Fundamentoso Arquiteturas de SGBD, Arquivos e Índices

o Processamento de Consultas e Operadores Relacionais

o Tuningo Planos e Métodos de Acesso

o Monitoramento e Ações

o Self-tuningo Visão Geral do Estado da Arte

o PostgreSQL @ PUC-Rio

o Adicionais Tuning e Comentários Finais

Page 6: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

6

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 11/113

Arquitetura ANSI/SPARC

EE1 EE2 EE3

EC

EI

Três níveis de abstração:

• Esquemas Externos (EE)

• Esquema Conceitual (EC)

• Esquema Interno (EI)

Princípio da Independência de Dados

• Independência física e lógica

• E.g. Modelo Relacional de Dados

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 12/113

Controle de

Concorrência

Processador de Consultas

Gerente de Armazenamento

Arquitetura FuncionalComponentes de um SGBD

Otimizador Executor

Gerência de

Bloqueios

Gerência de

Transação e

Recuperação

Controle de Memória

Controle de Dados

Meta-Dados e

Estatísticas

Dados e

Índices

Log de

Transações

SQL

Page 7: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

7

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 13/113

Componentes do SGBD

Gerenciadores (Managers):

RM - Relational Manager

DM - Data Manager

FM - File Manager

BM - Buffer Manager

RM - Recovery Manager

LgM - Log Manager

LkM - Lock Manager

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 14/113

Organização de Arquivos

Tipos básicos de arquivos: Heap (entry sequenced files)

Ordenados (sorted)

Hash

Árvores balanceadas

Page 8: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

8

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 15/113

Heap Files

Organização Seqüencial

não há ordenação dos registros

Inclusão de registro

simples e eficiente

Acesso

somente pesquisa seqüencial

Exclusão de registro

exclusão lógica eficiente, mas necessita reorganizações periódicas.

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 16/113

Arquivos Ordenados

(Sorted) –pesquisa interessante para campos chave

Num Nome Idade Sal

1000 Ademar 25 5000

1050 Afonso 27 7000

1075 Angela 22 6000

1100 Antonio 28 2500

1300 Carlos 23 1200

1350 Cesar 25 2000

.

.

.

3100 Sonia 28 3000

3150 Tatiana 20 1000

bloco

1

bloco

2

bloco

n

1

2

3

4

5

6

.

.

.

39

40

}}

}

Page 9: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

9

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 17/113

Arquivos Hash

Usa uma função de cálculo de endereço (hashing)

• função gera endereço provável

• Em geral, um único I/O por bloco para obter registro desejado

• endereço:– bloco ou– bloco + registro no bloco

Nome = Cristiano

endereço = f (nome)

Número Nome Idade Salário. . . . . . . . . . . .

1100 Antônio 28 2500

. . . . . . . . . . . .

1140 Cristiano 20 1000

. . . . . . . . . . . .

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 18/113

Árvores B

Árvores B: Bayer e McCreight (1972)

características:

construção: bottom up

paged tree

splits

chaves ordenadas em cada página

k chaves por página

k + 1 ponteiros por página

Page 10: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

10

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 19/113

Outras características:

N chaves, m ponteiros por página (ordem)

número máximo de níveis d (pior caso):

Árvores B

2/1log1 2/ Nd m

– N = 1.000.000 N = 10.000.000

– m = 512 m = 512

– d 3.37 3 níveis d 3.78 3 níveis

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 20/113

Árvores B+

23 37 58 75

43 95

03-22 23-35 37-42 43-54 58-74 75 -

Page 11: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

11

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 21/113

Ainda Árvores B+

Sequence Set:

conjunto ordenado de blocos

chaves ordenadas em cada bloco

lista simples ou duplamente encadeada

03 – 11 – 15 23 – 35 – 36 37 – 40 – 42 43 – 50 – 54 58 – 73 - 74

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 22/113

Índices

Estruturas auxiliares para permitir acesso mais rápido dados

Sem índices, para obter uma informação de uma tabela, todas as linhas devem ser lidas do arquivo

Com índice, pode ser feito acesso direto

Índices em livros permitem que

passemos diretamente para o

capítulo desejado!

Page 12: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

12

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 23/113

Estruturas auxiliares: Índices

0 1 2

3 4

n

20

80 70 60

110 30 90

40 100 10

180 160 50

5

6 7 8

09 10 11

12 13 14

10 11

30 07

20 02

40 09

50 14

60 05

chave pág.

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 24/113

Tipos de Índices

Podem ser de diversos tipos:

Árvore B+

Cluster ou não-cluster

Bitmap

...

Alguns SGBDs permitem:

índices com valores em ordem reversa

índices em resultados de funções

Page 13: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

13

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 25/113

Índices

Normalmente são variações das árvores B e B+

03–22 23-42 43-55 56-64 65-78 79-99

cage 55 eva folk 99

du 99

7864

55

22 42

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 26/113

Clusterização

Índices podem ser utilizados para: garantir unicidade das chaves na tabela

ordem física de armazenamento das linhas na tabela: cluster indexes no DB2 e SQL Server Index Organized tables no Oracle

índice cluster linhas armazenadas na seqüência da chave

índice não cluster chave do índice não influencia no posicionamento

Page 14: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

14

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 27/113

Índices Clusterizados

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 28/113

Índices Não-clusterizados

Page 15: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

15

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 29/113

Processamento de Consultas

Parse Query

Check de Semântica

Query Rewrite

Otimização doPlano de Acesso

Geração de Código

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 30/113

Otimização e Execução de Consultas

Envolve

Reescrita da consulta

Determinação do melhor plano de acesso

Após otimização, ocorre a execução da consulta de acordo com o plano

Page 16: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

16

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 31/113

Otimização de Consultas

Problema NP-difícil:

muitas alternativas de planos

O otimizador de consultas determina o plano de acesso através de:

Heurísticas (otimização por regras, RBO)

Busca de plano de melhor custo (otimização por custo, CBO)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 32/113

Metabase e Estatísticas

A otimização por custo demanda estatísticas:

de tabelas: número de tuplas, blocos, tamanho de registro médio

de colunas: número de valores distintos, nulos, histogramas

de índices: número de folhas, níveis, clustering

de sistema: utilização típica de I/O e de CPU

Estatísticas devem sempre estar atualizadas!

Page 17: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

17

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 33/113

Agenda

o Introdução e Motivação

o Conceitos e Fundamentoso Arquiteturas de SGBD, Arquivos e Índices

o Processamento de Consultas e Operadores Relacionais

o Tuningo Planos e Métodos de Acesso

o Monitoramento e Ações

o Self-tuningo Visão Geral do Estado da Arte

o PostgreSQL @ PUC-Rio

o Adicionais Tuning e Comentários Finais

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 34/113

Planos de Execução

É o resultado da otimização

É especificado no plano de execução: Ordem de acesso às tabelas

Ordem de operações seleção, projeção e junção

Índices utilizados

Tipos de junção

Ordenações

Tabelas intermediárias

Page 18: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

18

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 35/113

QEP: Query Execution Plan

Exemplo:

SELECT endereço, data-nascimento

FROM empregado

WHERE nome = ‘Chico Cesar’

Execution Plan

---------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPREGADO'

2 1 INDEX (UNIQUE SCAN) OF 'PK_EMP' (UNIQUE)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 36/113

Métodos de Acesso

Tipos básicos de operação:

Varreduras seqüenciais (full scan)

Indexadas (index scan)

Implementação de operadores Junções,

Uniões

Ordenações e eliminação de duplicatas

Page 19: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

19

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 37/113

Junções

Principais algoritmos:

Laços Aninhados (Nested Loops Join)

Ordenação/Intercalação (Merge Join)

Hashing (Hash Join)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 38/113

Nested Loops

60

50

40

30

20

10

T1

Outer Table

70

60

50

20

20

05

70

T2

Inner Table

Page 20: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

20

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 39/113

Merge Join

60

50

40

30

20

10

Outer Table

70

60

50

20

20

05

70

Inner Table

Ord

enad

a

Ord

enad

a

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 40/113

Hash Join

60

50

40

30

20

10

Outer Table 70

60

50

20

20

05

70

Inner Table

Build Phase

f(chave)10

20 50

30

40

60

Probe Phase

Page 21: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

21

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 41/113

Ordenação

Operação básica para diversas outras operações físicas

Resolve (usualmente) várias cláusulas: Order By, Group By, Distinct, Union, Minus, …

Operação cara

Se o conjunto a ser ordenado não cabe em memória, pode ser ainda mais cara!

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 42/113

Fator de Filtro

Fator de filtro de um predicado:

percentual de linhas da tabela que satisfazem determinado predicado.

Utilizado pelo Otimizador para: estimar tamanho da tabela resultado

decidir sobre uso de índices e outras estratégias de acesso

Calculado com base nas estatísticas existentes

Page 22: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

22

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 43/113

Fator de Filtro

Fator de filtro de um predicado:

número entre 0 e 1:

0 FF 1

FF 0 poucas linhas

FF 1 todas as linhas da tabela

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 44/113

Fator de Filtro

Estatísticas:

Tabela de Empregados com 10.000 linhas

Coluna Sexo: 2 valores distintos.

Estimativas: FF(M) = 0.5, FF(F) = 0.5

Select nome

from empregados

where sexo = „M‟

Estima retorno

de 5000 linhas

Select nome

from empregados

where sexo = „F‟

Estima retorno

de 5000 linhas

Não usa

índice

Page 23: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

23

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 45/113

Fator de Filtro

Estatísticas com a presença de Histograma: otimizador pode

perceber distribuição não-uniforme: tabela de Empregados com 10.000 linhas:

coluna Sexo: distribuição não uniforme.

estatísticas de distribuição não uniforme:

M: 9.000 empregados

F: 1.000 empregados

FF(F) = 0.1

Para consulta “sexo = `F`”, otimizador pode decidir utilizar o índice da coluna sexo

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 46/113

Fator de Filtro x Índices

O fator de filtro influencia diretamente na utilização de índices => quando consulta retorna poucas linhas e existem índices adequados, otimizador pode utilizar índices;

“Poucas linhas” depende de SGBD para SGBD e de versão para versão.

Page 24: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

24

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 47/113

Fator de Filtro

Predicado composto: AND

select * from empregados

where dept = ‘600’ and sexo = ‘m’ and cargo = ‘pgmr’

FF(sexo) = 0.9

FF(dept) = 0.2

FF(cargo) = 0.1

FF = 0.9 * 0.2 * 0.1 = 0.018

Estimativa para a tabela resultado: 180 linhas

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 48/113

Fator de Filtro

O Otimizador pode ser enganado em alguns casos em predicados correlacionados:select * from empregados where cidade = ‘ rio de

janeiro’

FF = 1 / 1.000 R = 100.000 / 1.000 = 100 linhas

select * from empregados where cidade = ‘ rio de janeiro’ and estado = ‘ rj’ and pais = ‘ brasil’

FF = (1 / 28) * (1 / 1.000) * (1/10) R = 100.000 / 28.000 = 3,5 linhas

Page 25: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

25

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 49/113

Tuning

Problema está em uma consulta apenas...

Tentar primeiro métodos com impactos locais

reescrita da consulta

Criação de índices, desnormalização do esquema e reordenação de transações:

podem afetar todo o sistema!

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 50/113

Reescrita

Evitar having se pudermos utilizar where. Where elimina linhas antes da operação de agrupamento e facilita a utilização de índices na comparação

Select max(salario)

From empregado

Group by depnum

Having depnum = 100

Select max(salario)

From empregado

Where depnum = 100

Page 26: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

26

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 51/113

Reescrita

Exemplo Oracle:

------------------------------------------------------------------------

| Operation | Name | Rows | Bytes| Cost

------------------------------------------------------------------------

| SELECT STATEMENT | | 1 | 16 | 360

| FILTER | | | |

| SORT GROUP BY | | 1 | 16 | 360

| TABLE ACCESS FULL |EMPREGADO | 100K| 1M| 102

Select max(salario) From empregado

Group by depnum Having depnum = 100

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 52/113

Reescrita

Exemplo Oracle

-------------------------------------------------------------------------

| Operation | Name | Rows | Bytes| Cost

-------------------------------------------------------------------------

| SELECT STATEMENT | | 1 | 16 | 2

| SORT AGGREGATE | | 1 | 16 |

| TABLE ACCESS BY INDEX RO|EMPREGADO | 100 | 1K| 2

| INDEX RANGE SCAN |IDX_EMP_DEPNUM | 100 | | 1

Select max(salario)

From empregado

Where depnum = 100

Custo cai de 360 para 2!

Queda para apenas 0,5% do

original!!!

Page 27: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

27

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 53/113

Reescrita

Eliminar “DISTINCT”

Verificar a lógica da aplicação

Para consultas em uma única tabela, verificar se o resultado da consulta contém alguma coluna definida como chave única

Para consultas com junções verificar o tipo de junção, as colunas da junção e as colunas resultado

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 54/113

-------------------------------------------------------------------------

| Operation | Name | Rows | Bytes| Cost

-------------------------------------------------------------------------

| SELECT STATEMENT | | 100K| 2M| 937

| SORT UNIQUE | | 100K| 2M| 937

| TABLE ACCESS FULL |EMPREGADO | 100K| 2M| 102

Reescrita

Exemplo Oracle:

select distinct ident, nome from empregado;

select ident, nome from empregado; Custo = 102

Page 28: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

28

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 55/113

Junções e Sub-Consultas

select E.Ident, E.nome from empregado Ewhere exists ( select * from dependente D

where D.Idemp = E.Ident )

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE

FILTER

TABLE ACCESS (FULL) OF ‘EMPREGADO'

INDEX (RANGE SCAN) OF 'IDX_DEPENDENTE_IDEMP' (NO N-UNIQUE)

Sem estatísticas

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 56/113

Junções e Sub-Consultas

Sem estatísticas

select E.Ident, E.nome from Empregado E, Dependente D where D.Idemp = E.Ident

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE

NESTED LOOPS

TABLE ACCESS (FULL) OF 'DEPENDENTE'

TABLE ACCESS (BY INDEX ROWID) OF ‘EMPREGADO'

INDEX (UNIQUE SCAN) OF 'IDX_EMPREGADO_ID' (UNIQUE)

Page 29: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

29

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 57/113

Junções e Sub-Consultas

Sem estatísticas

select E.Ident, E.nome from Empregado Ewhere E.Ident in ( select IdEmp

from Dependente D)

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE

NESTED LOOPS

VIEW OF 'VW_NSO_1'

SORT (UNIQUE)

TABLE ACCESS (FULL) OF 'DEPENDENTE'

TABLE ACCESS (BY INDEX ROWID) OF ‘EMPREGADO'

INDEX (UNIQUE SCAN) OF 'IDX_EMPREGADO_ID' (UNIQUE)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 58/113

Junções e Sub-Consultas

Com estatísticas

select E.Ident, E.nome from Empregado Ewhere exists ( select * from Dependente D

where D.Idemp = E.Ident )

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE (Cost=10 Card=1640 Bytes=173840)

HASH JOIN (SEMI) (Cost=10 Card=1640 Bytes=173840)

TABLE ACCESS (FULL) OF 'EMPREGADO' (Cost=5 Card=2200 Bytes=226600)

INDEX (FAST FULL SCAN) OF 'IDX_DEPENDENTE_IDEMP' (NON-UNIQUE) (Cost=2

Card=3000 Bytes=9000)

select E.Ident, E.nome from Empregado Ewhere E.Ident in ( select IdEmp from Dependente D)

Page 30: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

30

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 59/113

Junções e Sub-Consultas

Com estatísticas

select E.Ident, E.nome from Empregado E, Dependente D where D.Idemp = E.Ident

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE (Cost=8 Card=3000 Bytes=318000)

HASH JOIN (Cost=8 Card=3000 Bytes=318000)

INDEX (FAST FULL SCAN) OF 'IDX_DEPENDENTE_IDEMP' (NON-UNIQUE) (Cost=2

Card=3000 Bytes=9000)

TABLE ACCESS (FULL) OF 'EMPREGADO' (Cost=5 Card=2200 Bytes=226600)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 60/113

Outras Atividades de Tuning

Uso de hints

Cuidadoso!

Operações vs instruções SQL:

E.g. distinct --> internal sort

Ausência de PKs e/ou FKs

Full scan only

Page 31: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

31

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 61/113

Ainda Atividades e Causos

Projeto físico:

Clusterização + indices invertidos

Mudança na estrutura de persistência

Independência física!

Ferramentas de apoio ao DBA

E.g. Veritas, Quest

Monitoramento, alertas, consoles gráficos...

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 62/113

Agenda

o Introdução e Motivação

o Conceitos e Fundamentoso Arquiteturas de SGBD, Arquivos e Índices

o Processamento de Consultas e Operadores Relacionais

o Tuningo Planos e Métodos de Acesso

o Monitoramento e Ações

o Self-tuningo Visão Geral do Estado da Arte

o PostgreSQL @ PUC-Rio

o Adicionais Tuning e Comentários Finais

Page 32: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

32

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 63/113

Motivação para Self-tuning

Sistemas de bancos de dados se tornam cada vez mais utilizados na nossa sociedade

Sistemas de bancos de dados exigem profissionais especializados para a sua administração

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 64/113

Idéia: Autonomic Computing

Um grande desafio para a comunidade acadêmica: tornar os sistemas computacionais mais autônomos

Ansilomar Report on Database Research (1998)

IBM’s Autonomic Computing Manifesto (2001)

Page 33: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

33

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 65/113

Autonomic Computing

Ciclo Clássico

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 66/113

Autonomic Computing

Page 34: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

34

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 67/113

Auto-Sintonia (Self-Tuning)

Capacidade de auto-ajuste dos SGBDs ao ambiente para obter de melhor

desempenho

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 68/113

Atividades de Self-Tuning

Coleta de informações (CI) – monitoramento do sub-sistema onde está sendo realizado a auto-sintonia;

Avaliação da situação (AS) – avaliação da necessidade de alterações no sistema considerando as medidas da etapa anterior e métricas relacionadas ao sistema;

Enumeração de possíveis alterações (EPA) –detectada ineficiência de um sub-sistema, são enumeradas possíveis alterações a serem realizadas;

Realização de alterações (RA) – a partir das alternativas enumeradas, alterações nos mais diversos componentes do SGBD podem ser realizadas;

Page 35: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

35

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 69/113

Auto-Sintonia (Self-Tuning)

Alguns SGBDs comerciais possuem implementação de algumas características

Trabalhos científicos:

Muitos artigos sendo publicados nos últimos 10 anos!

Self-Tuning Database Systems: A Decade of Progress (Chaudhuri et al., Microsoft Research, VLDB 2007)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 70/113

Projeto SMART (Self Managing and Resource Tuning) do Centro de

Pesquisas IBM Almaden em parceria com os Laboratórios de Toronto e do

Vale do Silício;

Projeto AutoAdmin da Microsoft Research;

Oracle;

PostgreSQL;

Grupo de auto-sintonia em SGBDs

do Departamento de Informática PUC-Rio.

Índices Hipotéticos

Survey

Auto-Sintonia Global

Heurística de Benefícios

DB2: db2advis

SQL Server

2005: Database

Tuning AdvisorOracle 10g: Automatic

Database Diagnostic Monitor

Pg_autovacuum

Auto-Sintonia (Self-Tuning)

Page 36: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

36

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 71/113

Possível Classificação

Auto-Sintonia por Projeto

Auto-Sintonia por Adaptação

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 72/113

Auto-sintonia de

bancos de dados

Auto-sintonia global Auto-sintonia local

Projeto

Físico

Alocação

de dados

Controle

de carga

Substituição

de páginas

Ajuste de

buffers

Refino de

estatísticas

Auto-sintonia global

por construção

Auto-sintonia global

por adaptação

Possível Classificação

Page 37: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

37

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 73/113

Possível Classificação

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 74/113

Sistemas Auto-sintonizáveis por Projeto

RISC-style Database System

Autores: Chaudhuri (Microsoft, AutoAdmin) e Weikum (Universidade de Saarland)

Idéia de criar sistemas de bancos de dados com componentes menores, especializados

Exemplo: gerente de dados com capacidade SPJ (select-project-join)

Apenas position paper

Page 38: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

38

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 75/113

Sistemas Auto-sintonizáveis por Projeto

Projeto COMFORT

ETH em cooperação com UBS

Observar-predizer-reagir

Modelagem formal para determinar métricas

Auto Tune

IBM T. J. Watson Research Centre

Agente para controle inteligente

Independente da tecnologia monitorada

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 76/113

Seleção de Índices

Várias gerações de soluções: Escolha através de regras especializadas

(Rozen & Shasha, outros)

Criação de configurações de índices virtuais e uso do otimizador para custeamento (Microsoft Index Wizard, muitos outros)

Enumeração de índices virtuais e uso do otimizador para escolha (DB2 Index Advisor)

Page 39: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

39

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 77/113

Alocação de Dados

Mudanças nos padrões de acesso aos dados pode sobrecarregar discos ou nós de processamento

A idéia é mover arquivos ou fragmentos de arquivos dinamicamente entre os nós de processamento Vistas propostas para sistemas shared nothing (p.

ex., clusters de PCs, aB+-Tree) e sistemas shared memory (p. ex., arrays de discos; projeto COMFORT, disk cooling)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 78/113

Controle de Carga

Num sistema que usa locks, muitas transações concorrentes podem causar conflitos que levam a uma redução da vazão do sistema

A idéia é ajustar dinamicamente o MPL do sistema

Observação de métrica de conflitos (projeto COMFORT, conflict ratio)

Page 40: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

40

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 79/113

Substituição de páginas

Será LRU a melhor política de substituição de páginas para todas as variações de carga de trabalho?

A idéia é entender quais páginas ficam mais populares à medida que a carga de trabalho no sistema varia LRU-K: P. O’Neil, E. O’Neil, G. Weikum (projeto

COMFORT)

2Q: melhoria de desempenho de LRU-K, proposta por Johnson e Shasha

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 80/113

Ajuste de Buffers

Alguns sistemas permitem que criemos vários buffer pools, com diferentes objetos (tabelas, índices) associados a cada um

Como dividir os objetos em buffer pools de forma a melhorar o desempenho? É possível fazer isto dinamicamente? Configuração e seleção de tamanho de buffer

pools para o DB2

Page 41: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

41

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 81/113

Refino de estatísticas

Estatísticas são um fator determinante da qualidade dos planos escolhidos por otimizadores de custo

A idéia é atualizar as estatísticas do sistema com base no resultado de consultas que estão sendo executadas Microsoft Self-tuning Histograms

DB2 LEO – LEarning Optimizer

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 82/113

Self-Tuning de índices

Tuning de índices: Índices podem auxiliar em consultas

Índices podem ser prejudiciais a atualizações

Quais índices criar?

No self-tuning, dificuldade adicional: quando criar ou destruir?

Risco de criar-recriar inúmeras vezes

Page 42: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

42

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 83/113

Self-Tuning de índices – SQL Server -

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 84/113

Self-Tuning de índices – QUIET -

Quiet (Query-Driven Index Tuning)

Sugestão automática de criação de índices

Baseada em comandos proprietários DB2

Necessidade de reescrever aplicações existentes (cláusulas SQL)

Impossibilidade de gerência de carga de trabalho submetida diretamente ao SGBD

Page 43: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

43

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 85/113

Self-Tuning de índices – QUIET -

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 86/113

Self-Tuning de índices – COLT -

COLT (Continuos On-Line Tuning)

Monitora as consultas submetidas ao SGBD

Ajuste automático da configuração de índices (criação e remoção)

Implementado junto ao PostgreSQL

Cada consulta é otimizada uma vez para cada índice candidato → Sobrecarga

Page 44: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

44

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 87/113

Self-Tuning de índices – COLT -

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 88/113

Self-Tuning de índices – [Luhring et al 2007] -

- [Luhring et al 2007]

Monitoramento contínuo + Periodicamente soluciona o ISP (criação/remoção)

Segue o ciclo Observação/Predição/Reação

Cada consulta é otimizada duas vezes

Page 45: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

45

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 89/113

AutoAdmin Online

Extensão do SQL Server 2005

Executa continuamente e reage a variações na carga de trabalho ou nos dados

Modifica automaticamente o projeto físico do BD (criação e remoção)

Cada consulta é executa uma única vez

Self-Tuning de índices – AutoAdmin Online -

-

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 90/113

Self-Tuning de índices – AutoAdmin Online -

-

Page 46: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

46

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 91/113

Índices Hipotéticos

Uso de SGBD completo de código aberto Simulação? Não!

PostgreSQL (8.3.5)

Linux

Abordagem intrusiva Código core modificado

Comando create hypothetical index/drop hypothetical index e explain hypothetical index

Self-Tuning de índices – PUC-Rio -

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 92/113

Department Employee Product

id – int

name – varchar(50)

managerid – int

Number of tuples: 200

Number of tupes: 100 Number of tuples: 250

id – int

name – varchar(50)

address – varchar(200)

salary – numeric(10,2)

depid – integer

id – int

type – varchar(30)

description – varchar(150)

measure – varchar(30)

price – numeric(5,2)

Sale

id – int

year – int

month – int

day – int

prodid – int

sellerid – int

Price – numeric(4,2)

Number of tuples: 250

Tutorial: estudo de caso para what-if

Uso de Índices Hipotéticos

Page 47: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

47

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 93/113

select d.name, e.name, e.salary

from employee e, department d

where e.depid = d.id and

e.salary between 1000 and 2500;

The following query is very frequently issued by the university application:

Lets take a look at its query execution plan using the explain statement:

explain

select d.name, e.name, e.salary

from employee e, department d

where e.depid = d.id and

e.salary between 1000 and 2500;

Consultas Freqüentes

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 94/113

Query Execution Plan

QUERY PLAN

---------------------------------------------------------------------------

Hash Join (cost=1.32..314.96 rows=2499 width=50)

Hash Cond: ("outer".depid = "inner".id)

-> Seq Scan on employee e (cost=0.00..269.91 rows=2498 width=42)

Filter: ((salary >= 1000::numeric) AND (salary <= 2500::numeric))

-> Hash (cost=1.26..1.26 rows=26 width=16)

-> Seq Scan on department d (cost=0.00..1.26 rows=26 width=16)

(6 rows)

A sequential scan was chosen by the planner to access the employee table.

Perhaps we could improve this by creating an index on the salary column.

Plano de Consulta Gerado

Page 48: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

48

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 95/113

create hypothetical index hi_employee_salary

on employee(salary);

Criando um Índice Hipotetico

Although we could benefit from the existence of an index on the salary column, we should be

careful to create it. Firstly, we do not know if the DBMS will actually choose to use an index in the

salary column if it exists. Secondly, if we try to create an actual index in this column, the DBMS will

prevent writers from accessing the table. So it is hard to experiment with new indexes and

evaluate how good they are.

Instead of incurring the burden of creating an actual index on the column, we could simulate if this

index would be useful to the database. To do that, we create it as a hypothetical index:

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 96/113

Plano de Consulta com Índices Hipotéticos

explain hypothetical

select d.name, e.name, e.salary

from employee e, department d

where e.depid = d.id and

e.salary between 1000 and 2500;

The hypothetical index is not actually materialized in the database. Therefore, we will not

incur in heavy creation costs or obtain locks on the underlying table to create it. The

DBMS, however, cannot use the hypothetical index to answer a user query. If we query

the database again or use the explain statement, the system will still use a sequential

scan to access the employee table.

We can see how the DBMS would behave if the hypothetical index were materialized

using the explain hypothetical statement:

Page 49: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

49

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 97/113

Análise de Custos com Índices Hipotéticos

Query Execution Plan

QUERY PLAN

------------------------------------------------------------------------

Hash Join (cost=1.32..169.42 rows=2499 width=50)

Hash Cond: ("outer".depid = "inner".id)

-> Index Scan using hi_employee_salary on employee e

(cost=0.00..124.37 rows=2498 width=42)

Index Cond: ((salary >= 1000::numeric) AND (salary <= 2500::numeric))

-> Hash (cost=1.26..1.26 rows=26 width=16)

-> Seq Scan on department d (cost=0.00..1.26 rows=26 width=16)

(6 rows)00

If the index hi_employee_salary was materialized, the DBMS would use it

to process the query. The estimated cost to process the query would drop

from 314.96 using the sequential scan to 169.42 using the index scan.

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 98/113

Índices Hipotéticos eventualmente se tornam reais

drop hypothetical index hi_employee_salary;

create index i_employee_salary on

employee(salary);

Now that we know that the index is beneficial to performance, we can drop the

hypothetical index and create a corresponding actual one:

Page 50: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

50

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 99/113

Plano de consulta com novo índice criado

explain select

d.name, e.name, e.salary

from employee e, department d

where e.depid = d.id and

e.salary between 1000 and 2500;

Lets check the query execution plan for the query with the actual index created:

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 100/113

Análise dos custos

Query Execution Plan

QUERY PLAN

------------------------------------------------------------------------

Hash Join (cost=1.32..139.15 rows=2491 width=50)

Hash Cond: ("outer".depid = "inner".id)

-> Index Scan using i_employee_salary on employee e

(cost=0.00..94.24 rows=2490 width=42)

Index Cond: ((salary >= 1000::numeric) AND

(salary <= 2500::numeric))

-> Hash (cost=1.26..1.26 rows=26 width=16)

-> Seq Scan on department d (cost=0.00..1.26 rows=26

width=16)

(6 rows)

The cost estimated by the planner for the query using the hypothetical index was 169.42. With the actual

index, the planner gave us an estimate of 139.15. Cost estimates for hypothetical indexes tend to be

conservative, but always close to the cost of using the actual index.

Page 51: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

51

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 101/113

Modelo localSGBD

Componente N

Componente N + 1

Componente M + 1

Área sendo

ajustada

Avaliação de

métricas e

alterações na

execução

(AS e EPA)

Envio de informações

sobre alteração na

execução de tarefa (RA)

Coleta de informações

preliminares (CI)

Coleta de informações

sobre alterações (CI)

Coleta de informações

sobre execução final (CI)

Componente de

Auto-Sintonia

Componente M

Self-Tuning de índices – PUC-Rio -

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 102/113

SGBDs baseados em Agentes

Três arquiteturas

Arquitetura Embutida

SGBD

Arquitetura IntegradaArquitetura em Camadas

SGBD

Sistema de Agentes SGBD

Sistema de Agentes

Componentes

do SGBD Sistema

de

Agentes

Lifschitz e Macedo, CLEI 2001

Page 52: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

52

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 103/113

Agente em Camadas

Agentes de software

Autonomia: capacidade de agir para atingir um objetivo sem intervenção humana

Reatividade: capacidade de responder a mudanças para atingir objetivos;

Pró-atividade: agir para atingir seus objetivos, antecipando-se a mudanças no ambiente;

Sociabilidade: capacidade de interagir com outros participantes do ambiente;

Sensor

Ação

Raciocínio

Mobilidade

Colaboração

Tradução

Crença

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 104/113

Agentes e Self-Tuning

Agente em camada e etapas do Self-tuning (Costa e Lifschitz, CLEI 2002)

Sensor

Ação

Raciocínio

Mobilidade

Colaboração

Tradução

Crença

Agente Etapas da

Auto-Sintonia

Outras funcionalidades

Coleta de Informações

Avaliação da Situação

e

Enumeração de Possíveis

Alterações

Realização de Alterações

Decisões sobre colaboração

com outros agentes,

preparação e envio de

mensagens.

Recebimento e análise

prévia de mensagens de

outros agentes

Armazenamento de

estatísticas, decisões

tomadas e crenças

Page 53: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

53

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 105/113

SGBDs baseados em Agentes e Self-Tuning

Modelo global com agentesSGBD

Troca de

informações

Componente N

Componente N + 1

Componente M +1

Agente de

Self-tuning

Local

Componente M

“Lembrança de

operações passadas”

(dados persistentes)

Gravação de dados

Leitura de

dados

Área sendo

ajustada

Envio de informações a

outros agentes

de Self-tuning

Informações provenientes

de outros agentes de

Self-tuning

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 106/113

Modelo Global

Page 54: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

54

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 107/113

Questionamentos

Dada uma solicitação para criação ou destruição de um índice, agente de self-tuning de índices pode indicar que: Nenhum índice é benéfico/ prejudicial para a

consulta ou operação de atualização;

A criação/destruição de um índice já foi determinada e será realizada no momento adequado;

Índices já foram criados/destruídos antes da solicitação ser recebida;

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 108/113

Questões de implementação

Ciclo de uma operação

SGBD

Otimização do

Plano de Acesso

Geração de

código

Agente de

Self-tuning

Mobilidade

SGBD Query Rewrite

Otimização do

Plano de Acesso

Geração de

códigoAgente de

Self-tuning

Sensor

SGBD

Agente de

Self-tuing

Crença Estatísticas

SGBD

Agente de

Self-tuning

Raciocínio

Tomada de decisão

com possível

enumeração de

índices propostos

ou decisões sobre

imediata/posterior

criação/destruição

de índices

SGBD

Geração do Plano

de Acesso

Agente de

Self-tuning

Mobilidade

Solicitação de

montagem de plano

segundo uma dada

configuração

Consulta

Page 55: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

55

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 109/113

Self-Tuning de índices – PUC-Rio -

Criação autônoma de índices TPC-C, sintonia local, heurística de

benefícios, PostgreSQL

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 110/113

Self-Tuning de índices – PUC-Rio -

Page 56: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

56

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 111/113

Arquitetura do Componente de Auto-sintonia

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 112/113

Heurística de Benefícios

Seja B(ej,qk) o beneficio proporcionado pela estrutura ej para oprocessamento de uma tarefa qk. Este beneficio pode ser formalmentedefinido como:

onde, cost(qk) representa o custo de execução da tarefa qk sem autilização da estrutura ej e cost(qk, ej) representa o custo de execuçãoda tarefa qk utilizando-se a estrutura de acesso ej ;

Observe que se cost(qk) − cost(qk, ej) > 0, a utilização da estrutura ej

contribui para aumentar o desempenho da tarefa qk, logo: Bej ,qk > 0;

Caso contrario, a utilização da estrutura ej não proporciona nenhumamelhoria no desempenho da tarefa qk, podendo inclusive, se fosseutilizada, reduzir este desempenho (cost(qk) − cost(qk, ej) < 0).Contudo, neste caso, a estrutura ej não seria utilizada pelo otimizadordo SGBD, e, por conseguinte, Bej ,qk = 0

Page 57: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

57

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 113/113

O beneficio acumulado de uma determinada estrutura de acesso ej, representado por (BAej ), corresponde a soma dos seus benefícios para cada uma das tarefas anteriormente executadas. Logo:

onde, NQWt é o numero total de tarefas da carga de

trabalho.

Heurística de Benefícios

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 114/113

Heurística de Benefícios

1. Para cada comando qk capturado faça:

2. Otimize qk dada a configuração real de índices → costR(qk) + IR

3. Otimize qk dada a configuração de índices hipotéticos e reais→ costH(qk) + IH

4. Otimize dada uma configuração sem índices → costS(qk)

5. Para cada índice hipotético i em IH faça:

6. Bi,qk = max{0, costR(qk) - costH(qk)}

7. BAi = BAi + Bi,qk

8. Se BAi > ECCi

9. Criar o índice i + bonusi = BAi / Qtd

Page 58: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

58

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 115/113

1. P ara cada comando qk capturado faça:

10. Para cada índice real r em IR faça:

11. Br,qk = max{0, costS(qk) - costR(qk)}

12. BAr = BAr + Br,qk / BAr = BAr + bonusr

13. Se é qk é uma atualização

14. Para cada índice i afetado por qk faça:

15. BAi = BAi – ECAi

16. Se (i é real) e (BAi < 0) e (|BAi|>ECCi)

17. BAi = - ECCi

18. Remover o índice i

Heurística de Benefícios

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 116/113

Resultados Experimentais

Testes com DBT-2 toolkit

Carga TPC-C

Estudos de caso: Sem índice: BD sem índices e agente desligado

Índice Automático: BD sem índices e agente ligado

Indexação estática: DB com índices propostos pelosprojetistas do toolkit e agente desligado

Resultados surpreendentes! Um índice dos projetistas não criado

Um índice não projetado criado... Porém útil!

Page 59: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

59

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 117/113

Avaliação de Vazão (Throughput)

Escala do BD: # de armazéns

Teste de 90 min: período de aprendizado ok

0

10

20

30

40

50

60

1 2 3 4

Number of Warehouses

Th

rou

gh

pu

t (t

r/m

in)

No

indexing

Automatic

Indexing

Static

indexing

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 118/113

Análise dos Resultados

O componentes conseguiu obter boa vazão média para a aplicação em questão

O componente-agente passa por fase de aprendizado até atingir estabilidade

Quanto mais tempo o componente estiver ativo com carga estável, melhor é a vazão observada do sistema

Page 60: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

60

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 119/113

Self-Tuning de índices – PUC-Rio -

Destruição e reindex automáticos TPC-H, sintonia global, fragmentação física

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 120/113

Estudos com carga OLAP

TPC-H 6 consultas representativas (das 22)

Consultas muito demoradas

Novo comando

Evaluate

select linenumber, quantity

from lineitem

where orderkey = 200 and linenumber = 2;

Page 61: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

61

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 121/113

Resultados Experimentais

Testes com DBT-2 toolkit agora com carga TPC-H

Três estudos de caso como anteriormente

Mesma carga submetida para SGBDs comerciais SQL 2005 e Oracle 10g

Novo índice criado.... E útil !!!

Heurística de benefícios alterada Critério histórico

Bônus = Benefício Acumulado / Utilizações

O ideal seria calcular a contribuição exata de cada índice por comando submetido

E.g. Chaudhuri et al – 2004

Malus?

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 122/113

Resultados Experimentais (2)

Testes com DBT-2 toolkit novamente com TPC-C

Três estudos de caso como anteriormente

Mais consultas, ajustes na carga submetida

Captura de poucas consultas agora não é bom...

Índices eliminados foram recriados!!!

Page 62: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

62

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 123/113

Recriação de Índices

Fragmentação prejudica desempenho para varreduras: confirmado!

Fragmentação aumenta espaço ocupado por um índice: confirmado!

Fragmentação x Custo: confirmado?!

Malefícios Causados pela Fragmentação de Índices

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 124/113

Fragmentação no Nível Folha

Page 63: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

63

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 125/113

Fragmentação de Índices

Idéia básica: Índices fragmentados merecem nova chance!

Novos critérios antes de um drop Grau de fragmentação

G = 100 – [(Ra/Ri) * 100]

Tamanho do índice

Taxa de varreduras

Novo comando: getsize

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 126/113

Agenda

o Introdução e Motivação

o Conceitos e Fundamentoso Arquiteturas de SGBD, Arquivos e Índices

o Processamento de Consultas e Operadores Relacionais

o Tuningo Planos e Métodos de Acesso

o Monitoramento e Ações

o Self-tuningo Visão Geral do Estado da Arte

o PostgreSQL @ PUC-Rio

o Adicionais Tuning e Comentários Finais

Page 64: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

64

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 127/113

Técnicas de Tuning

Métodos com maior abrangência:

Criação/destruição de índices

Utilização de índices cluster

Visões materializadas

Escolha do tamanho adequado de bloco

Posicionamento dos arquivos em disco

Particionamento de objetos

Ajuste das áreas de memória

Ajuste dos parâmetros do SGBD

...

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 128/113

Utilização da Memória

SGBDs utilizam a memória para armazenar:

Dados mais recentemente acessados. Operações de atualização realizadas por usuários podem fazer com que existam em memória várias versões da mesma informação;

Informações sobre árvores de execução de comandos SQL;

Informações sobre a instância utilizada e a base de dados acessada;

Processos do servidor e seus parâmetros de controle;

Page 65: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

65

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 129/113

Utilização da Memória

Para melhorar desempenho:

Aumentar memória principal: nem sempre é a solução => realocar memória

Aumentar memória para o SGBD: concorrência com outros programas no servidor

Manter na memória as informações que são realmente necessárias

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 130/113

Estruturas de Memória

Database Buffer Cache

Contém cópias de blocos de dados lidos de arquivos

Único para os processos de todos os usuários conectados

Buffers organizados em listas - geralmente LRU

Page 66: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

66

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 131/113

Estruturas de Memória

Quando uma informação é acessada, SGBD procura essa informação no database buffer cache. Se encontra (cache hit) os dados são

utilizados diretamente da memória.

Se não (cache miss), o bloco de dados é copiado do arquivo de dados para o database buffer cache e, então, utilizado.

Um alto número de cache misses pode ser um indicador de problemas de desempenho

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 132/113

Buffer Cache

Finalidade: manter páginas mais usadas em memória

reduzir operações de I/O

Leitura lógica página desejada pode estar ou não no BP

Leitura física necessário realizar operação de I/O

Page 67: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

67

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 133/113

Buffer Cache

Eficiência do Buffer Pool: hit ratio

%100l

l

readsogical

readsphysicalreadsogicalratiohit

• Desejável:

hit ratio > 95%

depende das características do sistema

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 134/113

Equilibrando I/O

Mapeamento entre tabelas / índices e os data files

Tabela

Índice

Índice

Tablespace

Tablespace

Page 68: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

68

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 135/113

Estrutura de Armazenamento

Tabelas e índices alocam um espaço no banco de dados quando são criados => tamanho inicial.

A medida que crescem, podem surgir extensões, que podem não ser contíguas;

Fragmentação pode gerar problema de desempenho;

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 136/113

Comentários Finais

Regras básicas x experiência

Algumas regras indicam o caminho a tomar.

O otimizador pode gerar situações ilógicas... Experiência e criatividade ajudam muito!

Sempre testar as soluções adotadas em ambiente de simulação!

• Sintonia automática: será a solução?

Page 69: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

69

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 137/113

Agradecimentos

Sérgio [email protected]

Ana Carolina, Morelli, Maíra, Marcos, Anolan, Rogério, Tonho, Pedro…

www.inf.puc-rio.br/~postgresql

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 138/113

Perguntas?

OBRIGADO!

Page 70: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

70

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 139/113

Alguns conceitos...

Plano de acesso: caminhos e formas de acesso que serão utilizados pelo SGBD para atender a uma requisição SQL

Otimizador: componente do SGBD responsável por montar o plano de acesso aos dados => independência da consulta com relação ao formato de armazenamento dos dados

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 140/113

Distribuição de Arquivos

I/O paralelo => diminui a disputa por disco.

Dividir arquivos de maior acesso em diferentes discos.

Manter em discos separados:

Tablespaces do sistema;

Arquivos de dados com tabelas muito acessadas;

Arquivos de índices para tabelas muito acessadas;

Page 71: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

71

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 141/113

Row Migration

page n

F/V 1 F/V 2 F/V 3 F/V 4L1 L2 L3 L4headerupdate t1 set c1 =

....

page p

F/V 1 F/V 2 F/V 3 F/V 4L1 L2 L3 L4header

page n

header

ANTES

DEPOIS

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 142/113

Row Chaining

page k page p page t

F/V 1 F/V 2L1 L2 F/V 3 F/V 4L3 L4header

Representaçãológicapage k

page p

page t

Armazenamento físicoF/V 3L3 F/V 4L4header

F/V 1header L1

F/V 2header L2

Page 72: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

72

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 143/113

Eliminando Fragmentação

Aloque o espaço adequado na criação do objeto

Recrie o objeto, possivelmente movendo para novo tablespace => crie o objeto com o espaço adequado;

Exporte e reimporte a tabela

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 144/113

Particionamento

Decomposição de grandes objetos em objetos menores =>partições.

Cada partição física possui seus próprios atributos físicos => podem ser armazenadas até mesmo em tablespaces diferentes!

Pode ser realizado com dados e com índices.

Page 73: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

73

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 145/113

Particionamento

Exemplo:CREATE TABLE vendas (idVenda NUMBER(5),

data DATE,ValorTotal NUMBER(15,3))

PARTITION BY RANGE (data)(PARTITION data1 VALUES LESS THAN TO_DATE('01/04/2004','DD/MM/YYYY')TABLESPACE ts1,PARTITION data2 VALUES LESS THAN TO_DATE('01/07/2004','DD/MM/YYYY')

TABLESPACE ts2. . .PARTITION data4 VALUES LESS THAN TO_DATE('01/01/2005','DD/MM/YYYY')

TABLESPACE ts4)

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 146/113

Particionamento

Pode ocorrer por intervalos de valores (de uma ou mais colunas), hash e lista.

Sub-particionamento => partições para cada partição. Exemplo: partição por estados e, para cada

estado, sub-partição por intervalo de datas

Page 74: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

74

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 147/113

Particionamento

Otimizador pode acessar somente uma partição na realização de consultas.

Em tabelas com mesmas chave de particionamento e pontos de quebra, as junções podem ser realizadas por partições

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 148/113

Métodos de Acesso – SQL Server

Principais métodos de acesso:

Table Scan: percorre toda a tabela

Index Scan/Clustered Index Scan: percorre todo o nível folha do índice

Bookmark Lookup: procura uma linha na tabela ou índice baseado em seu rowid

Index Seek/Clustered Index Seek: percorre parte do índice recuperando informações de algumas chaves

Page 75: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

75

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 149/113

Métodos de Acesso – Oracle

Principais métodos de acesso: Full Table Scan: leitura seqüencial de todas as

páginas de uma tabela

Index Unique Scan: acessa uma única linha, garantido por constraint

Index Range Scan: acessa subconjunto dos dados de forma ordenada

Index Skip Scan: acesso indexado quando as colunas que prefixam o índice composto não são especificadas

Fast Full Index Scan: usado quando o índice cobre a consulta

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 150/113

Self-tuning de índices baseado em diferenças

Modelo Geral Otimizador de consultas gera plano de

execução

Agente de self-tuning de índices verifica se existe a possibilidade de criação de índices que auxiliem na consulta – índices hipotéticos

Em caso afirmativo, novo plano é gerado considerando os índices hipotéticos

Os ganhos da execução da consulta com índices hipotéticos são comparados com custos de criação dos índices em questão

Page 76: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

76

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 151/113

Self-tuning de índices baseado em diferenças

Avaliação de consultas

C = CR – CH;

Se C > CI então:

Criar índice;

Executar consulta;

Senão,

Executar consulta;

Avaliar operações anteriores;

Fim-se;

CR= Custo com índices

existentes

CH= Custo com índices

hipotéticos

CI= Custo de criação

de índices

C= Ganho na execução

da consulta com

índices hipotéticos

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 152/113

Self-tuning de índices baseado em diferenças

Avaliação de operações anteriores

Se CA + C > CI , então

Criar índice;

Apagar CA ;

Senão,

Fazer CA = CA + C ;

Fim-se;

CA= Custo armazenado

de possíveis ganhos

CI= Custo de criação

de índices

C= Ganho na execução

da consulta com

índices hipotéticos

Page 77: Sistema de Análise e Dimensionamento de Vigaspostgresql/conteudo/publicationsfiles/SBBD09... · 2 Tuning e Self-Tuning de Bancos de Dados José Maria Monteiro UNIFOR Mini-curso SBBD

77

Tuning e Self-Tuning de

Bancos de DadosJosé Maria Monteiro UNIFOR Mini-curso SBBD 2009 153/113

Self-tuning de índices baseado em diferenças

Avaliação de operações atualização e exclusões

C = CR – CH ;

Se C > 0

Se C > CI então:

Criar índice;

Executar operação;

Senão,

Executar operação;

Avaliar operações anteriores;

Fim-se;

Senão,

CA = CA - C;

Se |CA| = CI então,

Se índice existe, destruir índice;

Executar operação;

Apagar CA;

Fim-se;

Fim-se;

CR= Custo com índices existentes

CH= Custo com índices hipotéticos

CI= Custo de criação de índices

CA= Custo armazenado de

possíveis ganhos

CI= Custo de criação de índices