PostgreSQL Tuning: O elefante mais rápido que um leopardo
-
Upload
fabio-telles-rodriguez -
Category
Technology
-
view
6.512 -
download
1
Transcript of PostgreSQL Tuning: O elefante mais rápido que um leopardo
por Fernando Ike (90%) e Fbio Telles (10%)
PostgreSQL Tuning:O elefante mais rpido que um leopardo
09 de Novembro de 2007
Equilbrio Difcil
60% dos problemas so relacionados ao mau uso da linguagem SQL;
20% dos problemas so relacionados a m modelagem do banco de dados;
10% dos problemas so relacionados a m configurao do SGDB;
10% dos problemas so relacionados a m configurao do SO.
O banco est lento!
Problemas comuns
Concentrao de regras de negcio na aplicao para processos em lote;
Integridade referencial na aplicao
Mal dimensionamento de I/O
Ambientes virtualizados (Vmware, XEN, etc..)
Uso de configuraes padres do SO ou do PostgreSQL
O banco est lento!
Escolhas Erradas
Servidores dedicados para o PostgreSQL
Storage com Fiber Channel e iSCSI: Grupos de RAID dedicados
RAID: 0+1 por Hardware
Mais memria! (At 4GB em 32 bits)
Processadores de 64 bits: Performance at 3 vezes do que os 32 bits (AMD64 e EMT64 - Intel)
Melhor Hardware
Sistemas Operacionais *nix: Linux (Debian, Gentoo), FreeBSD, Solaris, etc
Em Linux: use Sistemas de arquivos XFS, Ext3, Ext2
Instale a ltima verso do PostgreSQL (atualmente 8.2) e partir do cdigo-fonte
No usar servios concorrentes (Apache, MySQL, SAMBA...) em discos, semforos e shared memory
Melhor SO
echo 2 > /proc/sys/vm/overcommit_memory
echo 25% > /proc/sys/kernel/shmmax
echo 25% > /proc/sys/kernel/shmall
echo deadline > /sys/block/sda/queue/scheduler
echo 250 32000 100 128 > /proc/sys/kernel/sem
echo 65536 > /proc/sys/fs/file-max
ethtool -s eth0 speed 1000 duplex full autoneg off
Parmetros do SO
Modificando o *nix
ulimit 65535
echo postgressoftnofile4096 >> /etc/security/limits
echo postgreshardnofile4096 >> /etc/security/limits
Parmetros do SO
Modificando o *nix
Discos ou parties distintos para:
Logs de transaes (WAL)
ndices: Ext2
Tabelas (particionar tabelas grandes)
Tablespace temporrio (em ambiente BI)*
Archives
SO + PostgreSQL
* Novo no PostgreSQL 8.3
Como organizar os Discos
O Melhor I/O
max_connections: O menor nmero possvel
shared buffers: 33% do total -> Para operaes em execuo
temp_buffers: Acesso s tabelas temporrias
work_mem: Para agregao, ordenao, consultas complexas
maintenance_work_mem: 75% da maior tabela ou ndice
postgresql.conf
Memria
max_fsm_pages: Mximo de pginas necessrias p/ mapear espao livre. Importante para operaes de UPDATE/DELETE.
wal_sync_method: fdatasync ou open_datasync
wal_buffers: tamanho do cache para gravao do WAL
commit_delay: Permite efetivar vrias transaes na mesma chamada de fsync
checkpoint_segments: tamanho do cache em disco para operaes de escrita
checkpoint_timeout: intervalo entre os checkpoints
postgresql.conf
Disco e Wall
Analyze:
test_base=# EXPLAIN ANALYZE SELECT foo FROM bar;
Ferramentas:
Pgfouine;
Pgadmin3;
PhpPgAdmin;
Tuning de SQL
Autovacuum X Vacuum: Depende do uso (Aplicaes Web, OLTI, BI)
Vacuum:
vacuum_cost_delay: tempo de atraso para vacuum executar automaticamente nas tabelas grandes
Autovacuum (ativado por padro a partir da verso 8.3):
autovacuum_naptime: tempo de espera para execuo do autovacuum.
Manuteno
Escalabilidade vertical:
Mais e melhores discos;
Mais memria;
Melhor processador (quad core, 64bits)
Escalabilidade horizontal:
Pgpool I (distribuio de carga de leitura e pool de conexes)
PgPool II (PgPool I + paralelizao de grandes consultas)
Slony I (Replicao Multi-Master Assncrona)
Warm Stand By
Quando o tuning no resolve
Documentao Oficial:
http://www.postgresql.org/docs/
Power PostgreSQL:
http://www.powerpostgresql.com/
PostgreSQL Brasil:
http://www.postgresql.org.br
Teste de estresse com solues livres e proprietrias:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7053&pagina=5
Benchmark Brou-Ha-Ha
http://blogs.ittoolbox.com/database/soup/archives/benchmark-brouhaha-17939
Links
Listas de discusso:
http://archives.postgresql.org/pgsql-performance/
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
IRC irc.freenodes.net:
#POSTGRESQL
#POSTGRESQL-BR
Dvidas
Fbio Telles:
http://www.midstorm.org/~telles
Fernando Ike
http://www.midstorm.org/~fike/weblog
Contato
7 e 8 de Dezembro
Centro de Convenes Pompia (So Paulo SP)
http://pgcon.postgresql.org.br
http://www.temporealeventos.com.br