PostgreSQL: Performance Tuning

Download PostgreSQL: Performance Tuning

Post on 05-Dec-2014

9.017 views

Category:

Technology

1 download

Embed Size (px)

DESCRIPTION

Palestra sobre performance em PostgreSQL

TRANSCRIPT

<ul><li> 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 </li> <li> 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 </li> <li> 3. Qual a velocidade mxima de um carro supersnico? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 4. Caractersticas de um carro supersnico. . . Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 5. Qual a velocidade mxima de um dragster? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 6. Qual a velocidade mxima de um fusca? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 7. Qual a velocidade mxima de um carro de rolem? Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 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 </li> <li> 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 </li> <li> 10. Melhores escolhas Melhor equipamento. . . Servidores dedicados para o PostgreSQL Storage com Fiber Channel, iSCSI: Grupos de RAID dedicados SCSI &gt; SAS &gt; SATA &gt; 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 </li> <li> 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 </li> <li> 12. Ajustes de Performance Parmetros do Sistema Operacional. . . echo 2 &gt; /proc/sys/vm/overcommit_memory echo 25% &gt; /proc/sys/kernel/shmmax echo 25%/64 &gt; /proc/sys/kernel/shmall echo deadline &gt; /sys/block/sda/queue/scheduler echo 250 32000 100 128 &gt; /proc/sys/kernel/sem echo 131072 &gt; /proc/sys/fs/le-max ethtool -s eth0 speed 1000 duplex full autoneg off echo 16777216 &gt; /proc/sys/net/core/rmem_default echo 16777216 &gt; /proc/sys/net/core/wmem_default echo 16777216 &gt; /proc/sys/net/core/wmem_max echo 16777216 &gt; /proc/sys/net/core/rmem_max Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 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 </li> <li> 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 </li> <li> 15. postgresql.conf Memria. . . postgresql.conf max_connections: O menor nmero possvel shared_buffers: 33% do total -&gt; 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 </li> <li> 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: &gt; 64 checkpoint_completion_target: 0.5 0.7 checkpoint_timeout: 10min (depende) wal_buffers: 8192kB -&gt; 16GB join_collapse_limit = &gt; 8 Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 17. postgresql.conf Discos e WAL. . . postgresql.conf random_coast_page: 2 4 effective_cache_size: 2/3 da RAM default_statistics_target: &gt; 30 Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 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 enable_nestloop = on|off enable_seqscan = on|off enable_sort = on|off enable_tidscan = on|off sesso SET enable_seqscan TO off; Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 19. O terror dos DBAs. . . Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 20. O terror dos DBAs. . . O terror dos DBAs(Object-Relation Mapping). . . Use ORM que permitam expresses SQL. Expresses em Object Query Language ainda no usam o melhor plano para consultas. O mundo ainda no todo objeto. Servidores de Aplicao tem pool de conexo, use-o! Voc no v mas as vezes o seu ORM faz. . . SELECT * FROM cadastro; SELECT * FROM cadastro, venda, produto; Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 21. Aplicaes bem construdas. . . . . . Mas meu prazo no permite! Boas prticas para desenvolvimento de aplicaes Modele bem o banco de dados prevendo grande crescimento da base e acesso concorrente. Operaes pesadas, execute com Funes/Store Procedures direto no PostgreSQL. De preferncia para o padro SQL/ISO(2008). Considere que um dia a aplicao tenha que usar mltiplas instncias de banco de dados. Evite uso de LIKE, ILIKE. Prera Full Text Search(tsearch2) Use Indces com moderao. Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 22. . . . e seu DBA feliz! Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 23. Ferramentas auxiliares Tuning SQL. . . EXPLAIN ANALYZE test_base=# EXPLAIN ANALYZE SELECT foo FROM bar; Ferramentas grcas Pgfouine Pgadmin3 PhpPgAdmin Cedrus Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 24. http://explain-analyze.info ... Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 25. De olho no log... Identicando problemas pelos logs. . . No postgresql.conf logging_collector = on log_min_duration_statement = 1000 (1 s) log lock waits = on Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 26. Pgfouine - http://pgfouine.projects.postgresql.org Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 27. Pgadmin3 - http://www.pgadmin.org/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 28. Pgadmin3 - http://www.pgadmin.org/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 29. PhpPgAdmin - http://phppgadmin.sourceforge.net/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 30. PhpPgAdmin - http://phppgadmin.sourceforge.net/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rpido que o leopardo </li> <li> 31. Cedrus - http://sou...</li></ul>