PostgreSQL: Performance Tuning

Embed Size (px)

DESCRIPTION

Palestra sobre performance em PostgreSQL

Text of PostgreSQL: Performance Tuning

  • 1. Performance Tuning para banco de dados PostgreSQL Fernando Ike de Oliveira PostgreSQL-BR Novembro de 2008 / SIPAM Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 2. Para no cometer gafes... Como fala/escreve mesmo? Escreve-se PostgreSQL ou postgres Pronncia-se postgres-s-qi-uel ou postgres No se diz/escreve: Postgree, PostrGREE, Postgr Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 3. Qual a velocidade mxima de um carro supersnico? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 4. Caractersticas de um carro supersnico. . . Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 5. Qual a velocidade mxima de um dragster? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 6. Qual a velocidade mxima de um fusca? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 7. Qual a velocidade mxima de um carro de rolem? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 8. O banco est lento! Problemas comuns. . . Proporcionalmente, os problemas de lentido esto em: 60% dos problemas so relacionados ao mau uso de expresses SQL. 20% dos problemas so relacionados a m modelagem do banco de dados. 10% dos problemas so relacionados a m congurao do SGDB. 10% dos problemas so relacionados a m congurao do Sistema Operacional. Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 9. O banco est lento! Equvocos de arquiteturas. . . Concentrao de regras de negcio na aplicao para processos em lote. Integridade referencial na aplicao. Mal dimensionamento de I/O (CPU, Plataforma, Disco). Ambientes virtualizados (Vmware, XEN, etc..) em AMD64/EMT64. Uso de conguraes padres do SO e/ou do PostgreSQL. Infra-estrutura concorrente (Rede, Storage...) Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 10. Melhores escolhas Melhor equipamento. . . Servidores dedicados para o PostgreSQL Storage com Fiber Channel, iSCSI: Grupos de RAID dedicados SCSI > SAS > SATA > IDE RAID 5 ou 10: 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) Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 11. Melhores escolhas Melhor Sistema Operacional. . . Sistemas Operacionais *nix: Linux (Debian, Gentoo), FreeBSD, Solaris, etc Em Linux: use Sistemas de arquivos XFS (noatime), Ext3 (writeback, noatime), EXT2 Instale a ltima verso do PostgreSQL (atualmente 8.3) e partir do cdigo-fonte No usar servios concorrentes (Apache, MySQL, SAMBA...) em discos, semforos e shared memory Usar, se possvel, um kernel (linux) mais recente (e estvel) Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 12. Ajustes de Performance Parmetros do Sistema Operacional. . . echo 2 > /proc/sys/vm/overcommit_memory echo 25% > /proc/sys/kernel/shmmax echo 25%/64 > /proc/sys/kernel/shmall echo deadline > /sys/block/sda/queue/scheduler echo 250 32000 100 128 > /proc/sys/kernel/sem echo 131072 > /proc/sys/fs/le-max ethtool -s eth0 speed 1000 duplex full autoneg off echo 16777216 > /proc/sys/net/core/rmem_default echo 16777216 > /proc/sys/net/core/wmem_default echo 16777216 > /proc/sys/net/core/wmem_max echo 16777216 > /proc/sys/net/core/rmem_max Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 13. Ajustes de Performance Limites do Sistema Operacional. . . no shell pmanson:# su - postgres postgres@pmanson:$ ulimit 65535 /etc/security/limits.conf postgres soft nole 4096 postgres soft nproc 4096 postgres hard nole 63536 postgres hard nproc 63536 Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 14. Como organizar discos Melhor I/O. . . Discos ou parties distintos para: Logs de transaes (WAL) ndices: Ext2 Tabelas (particionar tabelas grandes) Tablespace temporrio (em ambiente BI)* Archives SO + PostgreSQL Log de Sistema Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 15. postgresql.conf Memria. . . postgresql.conf 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 max_fsm_pages: Mximo de pginas necessrias p/ mapear espao livre. Importante para operaes de UPDATE/DELETE. Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 16. postgresql.conf Discos e WAL. . . postgresql.conf wal_sync_method: open_sync, fdatasync, open_datasync wal_buffers: tamanho do cache para gravao do WAL commit_delay: Permite efetivar vrias transaes na mesma chamada de fsync checkpoint_segments: > 64 checkpoint_completion_target: 0.5 0.7 checkpoint_timeout: 10min (depende) wal_buffers: 8192kB -> 16GB join_collapse_limit = > 8 Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 17. postgresql.conf Discos e WAL. . . postgresql.conf random_coast_page: 2 4 effective_cache_size: 2/3 da RAM default_statistics_target: > 30 Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo
  • 18. postgresql.conf Discos e WAL. . . postgresql.conf enable_bitmapscan = on|off enable_hashagg = on|off enable_hashjoin = on|off enable_indexscan = on|off enable_mergejoin = on|off