Está en la página 1de 47

Introducao

Cenario
PostgreSQL
Sintonia
Conclusao
Sintonia em PostgreSQL
Euler Taveira de Oliveira
PostgreSQL Brasil
4 de abril de 2008
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Resumo
1
Introducao
2
Cenario
3
PostgreSQL
4
Sintonia
Servidor
Consultas
5
Conclusao
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Sintonia
Sintonia em Banco de Dados e um grupo de atividades utilizadas
para otimizar e homogeneizar a performance de um banco de
dados.(Wikipedia)
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Benchmark
Benchmark e o ato de executar um programa de computador, um
conjunto de programas ou outras operacoes, a m de avaliar a
performance relativa de um objeto, normalmente executando uma
serie de testes padroes e ensaios nele.(Wikipedia)
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Padrao TPC
Transaction Processing Performance Council (TPC)
Atuais
TPC-App
TPC-C
TPC-E
TPC-H
Obsoletos
TPC-A
TPC-B
TPC-D
TPC-R
TPC-W
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Arquitetura do Sistema
OLTP (Online Transaction Processing)
TPC-C
TPC-E
OLAP (Online Analytical Processing)
TPC-H
Web
TPC-App
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Porque fazer?
otimizar a performance
medir capacidade de processamento
comparar diferentes componentes de hardware
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Resumo
1
Introducao
2
Cenario
3
PostgreSQL
4
Sintonia
Servidor
Consultas
5
Conclusao
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Ambiente Ideal
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Hardware
CPU: 32 < 64 bits
Disco: IDE < SCSI < SAN (FC + iSCSI)
Memoria: unbuered < registered < ECC
Rede: Megabit < ATM < Gigabit < 10-Gigabit
Rede CPU < RAM < Disco
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Discos
RAID 1+0
RAID 5
RAID 1
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Sistema Operacional
Linux
FreeBSD
Windows (nao-POSIX)
Solaris
*NIX
Windows < *NIX < FreeBSD Linux
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Sistemas de Arquivos
XFS
EXT3 (ordered, journal, writeback)
JFS
ReiserFS
EXT2
EXT4?
ReiserFS < JFS < EXT3 < XFS
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Organizando os dados
separar dados do log de transacao (pg xlog)
tablespaces
ndices
tabelas
particionamento de tabelas
vertical
horizontal
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Resumo
1
Introducao
2
Cenario
3
PostgreSQL
4
Sintonia
Servidor
Consultas
5
Conclusao
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Arquitetura
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Processamento de Consultas
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Ferramentas
pgbench (TPC-B)
DBT-2 (TPC-C)
DBT-3 (TPC-H)*
DBT-4 (TPC-App)
DBT-5 (TPC-E)**
BenchmarkSQL (TPC-C)
JMeter?
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Resumo
1
Introducao
2
Cenario
3
PostgreSQL
4
Sintonia
Servidor
Consultas
5
Conclusao
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Conexao
listen addresses: aceitar conexoes de onde?
max connections: maximo de conexoes simultaneas
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Memoria
shared buers
memoria utilizada para operacoes ativas
nao e o total de memoria RAM utilizada pelo PostgreSQL
valores altos diminuem a performance!
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Uso de Recursos
temp buers: utilizado para acesso a tabelas temporarias
work mem: memoria utilizada para ordenacoes e agregacoes
maintenance work mem: memoria utilizada para operacoes
de manutencao (VACUUM, CREATE INDEX, ALTER TABLE
ADD FOREIGN, etc); 50% a 75% da maior tabela ou ndice e
um bom n umero!
max fsm pages: maximo de paginas para mapear o espaco
livre (vide VACUUM VERBOSE)
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Uso de Recursos
vacuum cost delay: tempo que ira adormecer se o limite de
custo for atingido
bgwriter delay: intervalo entre execucoes do background
writer
bgwriter lru maxpages: nao mais do que X paginas serao
escritas pelo background writer por ciclo
bgwriter lru multiplier: fator escalonador para estimar
n umero de buers necessarios no proximo ciclo
Valores baixos do bgwriter lru * reduzem a I/O mas vao aumentar
a carga de trabalho do backend durante o ponto de controle
(checkpoint).
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
WAL
fsync: garante que o SO escreveu o WAL no disco
synchronous commit: espera o WAL ser escrito no disco?
wal sync method: open datasync, fdatasync,
fsync writethrough, fsync e open sync
full page writes: escreve pagina completa na primeira
modicacao apos um ponto de controle (checkpoint).
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
WAL
wal buers: tamanho necessario para armazenar o WAL de
uma transacao
wal writer delay: intervalo entre execucoes do wal writer
commit delay: tempo entre escrever um registro no WAL e
escreve-lo no disco
commit siblings: n umero mnimo de transacoes abertas
antes de esperar commit delay.
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Checkpoint
checkpoint segments: n umero maximo de segmentos de
arquivo de log entre pontos de controle automaticos
checkpoint timeout: intervalo maximo entre pontos de
controle automaticos
checkpoint completion target: fracao do intervalo de
pontos de controle
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Custo
seq page cost: custo de busca de uma pagina em disco
sequencialmente
random page cost: custo de busca de uma pagina em disco
randomicamente; valores menores aumentam chance de uso
de ndices!
eective cache size: tamanho da cache em disco disponvel
para uma consulta; e utilizado somente para estimativas.
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Estatsticas
track activities: habilita coleta de estatsticas do comando
executado atualmente
track counts: habilita coleta de estatsticas da atividade do
banco de dados
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Limpeza Automatica
autovacuum: habilitar o autovacuum launcher daemon
autovacuum max workers: n umero maximo de workers
simultaneos
autovacuum naptime: intervalo mnimo entre execucoes do
autovacuum
autovacuum * threshold: n umero mnimo de tuplas
modicadas para disparar um ANALYZE e/ou VACUUM
autovacuum * scale factor: fracao mnima do tamanho da
tabela para disparar um ANALYZE e/ou VACUUM
autovacuum vacuum cost delay: vacuum cost delay entre
operacoes de VACUUM automaticas
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Logging
logging collector: habilita gravacao de mensagens no pg log
log checkpoints: registra informacoes sobre os pontos de
controle
log lock waits: registra esperas devido a travamentos
log temp les: registra arquivos temporarios criados
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
O que e o EXPLAIN?
Mostra o plano de execucao que o planejador do PostgreSQL
elegeu para uma determinada consulta.
como a tabela e percorrida
algoritmos de juncao utilizados
operacoes executadas (ordenacao, ltro, ...)
estimativa de registros e tempo
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Comando Explain
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Explicando o EXPLAIN
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
EXPLAIN e ANALYZE: dupla perfeita
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Explicando o EXPLAIN
BEGIN;
EXPLAIN ANALYZE DELETE ...;
ROLLBACK;
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Por que minha consulta esta com desempenho ruim?
estatsticas desatualizadas (ANALYZE)
uso de ndices
estimativa ruim
decienciado planejador
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas

Indices
criacao de ndices
ndices nao resolvem tudo!
escolha o melhor tipo de ndice para a(s) colunas(s)
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Consultas
reescrever a consulta (EXISTS, INTERSECT, EXCEPT, ...)
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Planejamento de Consulta
desabilitar algoritmos de juncao
enable hashagg
enable hashjoin
enable mergejoin
enable nestloop
desabilitar tipos de buscas
enable bitmapscan
enable indexscan
enable seqscan
enable tidscan
desabilitar ordenacao
enable sort
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Fun coes
CREATE FUNCTION foobar ... COST custo ROWS numreg;
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Tabelas de Estatsticas
http://www.explain-analyze.info/
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Servidor
Consultas
Tabelas de Estatsticas
analise estatstica
parametro default statistic target
ALTER TABLE foo ALTER bar SET STATISTICS n umero
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Resumo
1
Introducao
2
Cenario
3
PostgreSQL
4
Sintonia
Servidor
Consultas
5
Conclusao
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Nao consegui ate agora...
bug do otimizador
otimizador nao e esperto o suciente
contribuir o plano conosco para acharmos uma solucao
(pgsql-performance)
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Referencias
http://www.postgresql.org/
http://www.postgresql.org.br/
http://www.explain-analyze.info/
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Vida Longa ao PostgreSQL
Euler Taveira de Oliveira ERBD 2008
Introducao
Cenario
PostgreSQL
Sintonia
Conclusao
Perguntas
?
Euler Taveira de Oliveira
euler@timbira.com
http://www.timbira.com/
Euler Taveira de Oliveira ERBD 2008

También podría gustarte