PostgreSQL: Performance Tuning

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    PostgreSQL: Performance Tuning - Presentation Transcript

    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 rápido que o leopardo
    2. Para não cometer gafes... Como fala/escreve mesmo? Escreve-se PostgreSQL ou postgres Pronúncia-se postígres-és-qüi-uel ou postígres Não se diz/escreve: Postgree, PostrGREE, Postgrí Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    3. Qual a velocidade máxima de um carro supersônico? Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    4. Características de um carro supersônico. . . Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    5. Qual a velocidade máxima de um dragster? Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    6. Qual a velocidade máxima de um fusca? Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    7. Qual a velocidade máxima de um carro de rolemã? Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    8. O banco está lento! Problemas comuns. . . Proporcionalmente, os problemas de lentidão estão em: 60% dos problemas são relacionados ao mau uso de expressões SQL. 20% dos problemas são relacionados a má modelagem do banco de dados. 10% dos problemas são relacionados a má configuração do SGDB. 10% dos problemas são relacionados a má configuração do Sistema Operacional. Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    9. O banco está lento! Equívocos de arquiteturas. . . Concentração de regras de negócio na aplicação para processos em lote. Integridade referencial na aplicação. Mal dimensionamento de I/O (CPU, Plataforma, Disco). Ambientes virtualizados (Vmware, XEN, etc..) em AMD64/EMT64. Uso de configurações padrões do SO e/ou do PostgreSQL. Infra-estrutura concorrente (Rede, Storage...) Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido 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 memória! (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 rápido 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 versão do PostgreSQL (atualmente 8.3) e à partir do código-fonte Não usar serviços concorrentes (Apache, MySQL, SAMBA...) em discos, semáforos e shared memory Usar, se possível, um kernel (linux) mais recente (e estável) Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    12. Ajustes de Performance Parâmetros 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/file-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 rápido 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 nofile 4096 postgres soft nproc 4096 postgres hard nofile 63536 postgres hard nproc 63536 Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    14. Como organizar discos Melhor I/O. . . Discos ou partições distintos para: Logs de transações (WAL) Índices: Ext2 Tabelas (particionar tabelas grandes) Tablespace temporário (em ambiente BI)* Archives SO + PostgreSQL Log de Sistema Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    15. postgresql.conf Memória. . . postgresql.conf max_connections: O menor número possível shared_buffers: 33% do total -> Para operações em execução temp_buffers: Acesso às tabelas temporárias work_mem: Para agregação, ordenação, consultas complexas maintenance_work_mem: 75% da maior tabela ou índice max_fsm_pages: Máximo de páginas necessárias p/ mapear espaço livre. Importante para operações de UPDATE/DELETE. Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido 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 gravação do WAL commit_delay: Permite efetivar várias transações 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 rápido 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 rápido 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 enable_nestloop = on|off enable_seqscan = on|off enable_sort = on|off enable_tidscan = on|off sessão SET enable_seqscan TO off; Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    19. O terror dos DBA’s. . . Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    20. O terror dos DBA’s. . . O terror dos DBA’s(Object-Relation Mapping). . . Use ORM que permitam expressões SQL. Expressões em Object Query Language ainda não usam o melhor plano para consultas. O mundo ainda não é todo objeto. Servidores de Aplicação tem pool de conexão, use-o! Você não vê mas as vezes o seu ORM faz. . . SELECT * FROM cadastro; SELECT * FROM cadastro, venda, produto; Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    21. Aplicações bem construídas. . . . . . Mas meu prazo não permite! Boas práticas para desenvolvimento de aplicações Modele bem o banco de dados prevendo grande crescimento da base e acesso concorrente. Operações pesadas, execute com Funções/Store Procedures direto no PostgreSQL. De preferência para o padrão SQL/ISO(2008). Considere que um dia a aplicação tenha que usar múltiplas instâncias de banco de dados. Evite uso de LIKE, ILIKE. Prefira Full Text Search(tsearch2) Use Indíces com moderação. Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    22. . . . e seu DBA feliz! Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    23. Ferramentas auxiliares Tuning SQL. . . EXPLAIN ANALYZE test_base=# EXPLAIN ANALYZE SELECT foo FROM bar; Ferramentas gráficas Pgfouine Pgadmin3 PhpPgAdmin Cedrus Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    24. http://explain-analyze.info ... Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    25. De olho no log... Identificando 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 rápido que o leopardo
    26. Pgfouine - http://pgfouine.projects.postgresql.org Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    27. Pgadmin3 - http://www.pgadmin.org/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    28. Pgadmin3 - http://www.pgadmin.org/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    29. PhpPgAdmin - http://phppgadmin.sourceforge.net/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    30. PhpPgAdmin - http://phppgadmin.sourceforge.net/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    31. Cedrus - http://sourceforge.net/projects/cedrus Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    32. Cedrus - http://sourceforge.net/projects/cedrus Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    33. Ferramentas auxiliares Manutenção. . . Autovacuum X Vacuum Depende do uso (Aplicações Web, OLTI, BI) Vacuum vacuum_cost_delay: tempo de atraso para vacuum executar automaticamente nas tabelas grandes Autovacuum (Habilitado por padrão à partir do 8.3) autovacuum_naptime: tempo de espera para execução do autovacuum. Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    34. Ferramentas auxiliares Ferramentas de Stress. . . Pgbench: no diretório do contrib do PostgresSQL, padrão de transações do tipo TPC-B. DBT-2: Ferramenta da OSDL, padrão de transações do tipo TPC-C. BenchmarkSQL: Ferramenta Java para benchmark em SQL para vários banco de dados (JDBC), padrão de transações do tipo TPC-C. Jmeter: Ferramenta Java genérica para testes de stress, usado para aplicações (Web, ...) e também pode ser direto para um banco de dados. Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    35. Quando o tuning não resolve. . . Quando o tuning não resolve. . . Escalabilidade vertical: Mais e melhores discos; Mais memória; Melhor processador (quad core, 64bits) Escalabilidade horizontal: Pgpool I (distribuição de carga de leitura e pool de conexões) PgPool II (PgPool I + paralelização de grandes consultas) Slony I (Replicação Multi-Master Assíncrona) Bucardo (Replicação Multí-Master Assíncrona) Warm Stand By/Log Shipping Pgbouncer + PL/Proxy + Slony Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    36. Links Documentação Oficial: http://www.postgresql.org/docs/ Power PostgreSQL: http://www.powerpostgresql.com/ PostgreSQL Brasil: http://www.postgresql.org.br/ Teste de stress com soluções livres e proprietárias: 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 BenchmarkSQL, DBT-2 - SourceForge: http://www.sf.net Jmeter: http://jakarta.apache.org/jmeter/ Tsung: http://tsung.erlang-projects.org/ Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    37. Dúvidas Links e Listas de discussão: http://archives.postgresql.org/pgsql-performance/ https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral http://www.postgresql.org/docs/current/static/performance-tips.html http://www.revsys.com/writings/postgresql-performance.html http://www.powerpostgresql.com/Docs http://wiki.postgresql.org/wiki/Special:Search?search=performance&go=Go IRC irc.freenodes.net: #postgresql #postgresql-br Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    38. Conclusão Contatos: fernando.ike@b2br.com.br fernando.ike@gmail.com http://www.midstorm.org/~fike/weblog Fernando Ike de Oliveira PostgreSQL: O elefante mais rápido que o leopardo
    SlideShare Zeitgeist 2009

    + Fernando IkeFernando Ike Nominate

    custom

    832 views, 0 favs, 0 embeds more stats

    Palestra sobre performance em PostgreSQL

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 832
      • 832 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 21
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories