PostgreSQL Tuning: O elefante mais rápido que um leopardo

download PostgreSQL Tuning: O elefante mais rápido que um leopardo

If you can't read please download the document

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:

[email protected]

http://www.midstorm.org/~telles

Fernando Ike

[email protected]

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