SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Introdu¸˜o
                             ca
                     Arquitetura
                      pgBouncer
                 Caso de Sucesso




pgBouncer: um aglomerador de conex˜es para
                                  o
               PostgreSQL

               Euler Taveira de Oliveira

                        PostgreSQL Brasil


                    24 de abril de 2009




         Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                        ca
                                Arquitetura
                                 pgBouncer
                            Caso de Sucesso


Resumo



  1   Introdu¸˜o
             ca


  2   Arquitetura


  3   pgBouncer


  4   Caso de Sucesso




                    Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                       ca
                               Arquitetura
                                pgBouncer
                           Caso de Sucesso


Conceito




   Aglomerador de Conex˜es (connection pooler) ´ um software que
                        o                      e
   mant´m uma cache de conex˜es para serem utilizadas em
        e                    o
   requisi¸˜es futuras.
          co




                   Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                       ca
                               Arquitetura
                                pgBouncer
                           Caso de Sucesso


Objetivo




   Diminuir impacto de performance causado pela abertura de novas
   conex˜es
        o




                   Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                      ca
                              Arquitetura
                               pgBouncer
                          Caso de Sucesso


Cen´rio
   a




      consultas de curto prazo
      muitos usu´rios
                a




                  Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                      ca
                              Arquitetura
                               pgBouncer
                          Caso de Sucesso


Cen´rio
   a




      consultas de curto prazo
      muitos usu´rios
                a

                               Aplica¸˜es Web
                                     co




                  Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                        ca
                                Arquitetura
                                 pgBouncer
                            Caso de Sucesso


Resumo



  1   Introdu¸˜o
             ca


  2   Arquitetura


  3   pgBouncer


  4   Caso de Sucesso




                    Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                 ca
                         Arquitetura
                          pgBouncer
                     Caso de Sucesso


PostgreSQL




             Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                              ca
                      Arquitetura
                       pgBouncer
                  Caso de Sucesso


Conex˜o
     a




          Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                   ca
                           Arquitetura
                            pgBouncer
                       Caso de Sucesso


Arquitetura do Sistema




               Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                        ca
                                Arquitetura
                                 pgBouncer
                            Caso de Sucesso


Resumo



  1   Introdu¸˜o
             ca


  2   Arquitetura


  3   pgBouncer


  4   Caso de Sucesso




                    Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                      ca
                              Arquitetura
                               pgBouncer
                          Caso de Sucesso


Modos de Opera¸˜o
              ca




      aglomera¸˜o por sess˜o (session pooling) – gentil
              ca          a
      aglomera¸˜o por transa¸˜o (transaction pooling)
              ca            ca
      aglomera¸˜o por comando (command pooling) – agressivo
              ca




                  Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                     ca
                             Arquitetura
                              pgBouncer
                         Caso de Sucesso


Configura¸˜o
        ca




     arquivo de autentica¸˜o
                         ca
     arquivo de configura¸˜o (formato ini)
                        ca




                 Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                      ca
                              Arquitetura
                               pgBouncer
                          Caso de Sucesso


Arquivo de Autentica¸˜o
                    ca




      idˆntico ao $PGDATA/global/pg auth
        e
      pode-se utilizar o mesmo arquivo se o pgBouncer estiver na
      mesma m´quina do PostgreSQL
               a




                  Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                    ca
                            Arquitetura
                             pgBouncer
                        Caso de Sucesso


Arquivo de Configura¸˜o
                   ca

   [databases]
   empresa = host=127.0.0.1 port=5432 dbname=4linux
   [pgbouncer]
   listen_addr = 127.0.0.1
   listen_port = 6432
   auth_type = md5
   auth_file = /etc/pgbouncer/users
   logfile = /var/log/pgbouncer/pgbouncer.log
   pidfile = /var/run/pgbouncer/pgbouncer.pid
   admin_users = pedro
   stats_users = joao, maria
   pool_mode = transaction
   max_client_conn = 500
   default_pool_size = 100
                Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                         ca
                                 Arquitetura
                                  pgBouncer
                             Caso de Sucesso


Arquivo de Configura¸˜o - databases
                   ca

   Se¸˜o databases
     ca
       dbname
       host
       port
       user
       password
       pool size
       client encoding

      empresa = host=127.0.0.1 port=5432 dbname=4linux


                     Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                         ca
                                 Arquitetura
                                  pgBouncer
                             Caso de Sucesso


Arquivo de Configura¸˜o - pgbouncer
                   ca
   Op¸˜es Gerais
     co
       logfile
       auth type (trust, any, plain, crypt e md5)
       auth file ($PGDATA/global/pg auth)
       pool mode (session, transaction e statement)
       admin users
       stat users
       max client conn
       default pool size
       reserve pool size
       server round robin

                     Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                         ca
                                 Arquitetura
                                  pgBouncer
                             Caso de Sucesso


Arquivo de Configura¸˜o - pgbouncer
                   ca



   Op¸˜es de Log
     co
       syslog
       syslog facility
       log connections
       log disconnections
       log pooler errors




                     Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                        ca
                                Arquitetura
                                 pgBouncer
                            Caso de Sucesso


Arquivo de Configura¸˜o - pgbouncer
                   ca



   Verifica¸˜es e Tempo de Espera
          co
       server reset query (DISCARD ALL)
       server check query (SELECT 1)
       server idle timeout
       server login retry
       client login timeout




                    Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                     ca
                             Arquitetura
                              pgBouncer
                         Caso de Sucesso


Monitoramento


      SHOW STATS
      SHOW SERVERS
      SHOW CLIENTS
      SHOW POOLS
      SHOW LISTS
      SHOW USERS
      SHOW DATABASES
      SHOW FDS
      SHOW CONFIG


                 Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                    ca
                            Arquitetura
                             pgBouncer
                        Caso de Sucesso


Monitoramento


  pgbouncer=# show stats;
  -[ RECORD 1 ]----+-----------
  database         | bench
  total_requests   | 8014
  total_received   | 3121707
  total_sent       | 1527374
  total_query_time | 1361574602
  avg_req          | 0
  avg_recv         | 0
  avg_sent         | 0
  avg_query        | 0


                Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                     ca
                             Arquitetura
                              pgBouncer
                         Caso de Sucesso


Controle de Opera¸oes
                 c˜



      PAUSE: desconecta todos clientes mas espera consultas
      terminarem;
      SUSPEND: para de atender requisi¸˜es;
                                      co
      RESUME: voltar a trabalhar ap´s comandos PAUSE e
                                   o
      SUSPEND;
      SHUTDOWN: termina o processo do pgBouncer;
      RELOAD: carrega novamente o arquivo de configura¸˜o.
                                                     ca




                 Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                    ca
                            Arquitetura
                             pgBouncer
                        Caso de Sucesso


Controle de Opera¸oes
                 c˜




   pgbouncer=# pause;
   PAUSE
   pgbouncer=# resume;
   RESUME
   pgbouncer=# reload;
   RELOAD




                Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                        ca
                                Arquitetura
                                 pgBouncer
                            Caso de Sucesso


Resumo



  1   Introdu¸˜o
             ca


  2   Arquitetura


  3   pgBouncer


  4   Caso de Sucesso




                    Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                    ca
                            Arquitetura
                             pgBouncer
                        Caso de Sucesso


Caso de Sucesso: last.fm


   Carga




                Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                    ca
                            Arquitetura
                             pgBouncer
                        Caso de Sucesso


Caso de Sucesso: last.fm


   Mem´ria
      o




                Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                    ca
                            Arquitetura
                             pgBouncer
                        Caso de Sucesso


Caso de Sucesso: last.fm


   CPU




                Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                      ca
                              Arquitetura
                               pgBouncer
                          Caso de Sucesso


Referˆncias
     e




              http://pgfoundry.org/projects/pgbouncer/
                      http://www.postgresql.org/
                    http://www.postgresql.org.br/
      http://www.lastfm.com.br/user/Russ/journal/2008/02/21/
          zd postgres connection pools: pgpool vs. pgbouncer




                  Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                  ca
                          Arquitetura
                           pgBouncer
                      Caso de Sucesso


Vida Longa ao PostgreSQL




              Euler Taveira de Oliveira   PGDay SP
Introdu¸˜o
                                ca
                        Arquitetura
                         pgBouncer
                    Caso de Sucesso


Perguntas



                                    ?

                  Euler Taveira de Oliveira
                     euler@timbira.com
                 http://www.timbira.com/




            Euler Taveira de Oliveira   PGDay SP

Mais conteúdo relacionado

Mais de elliando dias

How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojureelliando dias
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypseelliando dias
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lispelliando dias
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmerselliando dias
 
Clojure - An Introduction for Java Programmers
Clojure - An Introduction for Java ProgrammersClojure - An Introduction for Java Programmers
Clojure - An Introduction for Java Programmerselliando dias
 
Clojure and Modularity
Clojure and ModularityClojure and Modularity
Clojure and Modularityelliando dias
 

Mais de elliando dias (20)

How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojure
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypse
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
 
Clojure - An Introduction for Java Programmers
Clojure - An Introduction for Java ProgrammersClojure - An Introduction for Java Programmers
Clojure - An Introduction for Java Programmers
 
Clojure and Modularity
Clojure and ModularityClojure and Modularity
Clojure and Modularity
 

pgBouncer: Case Study on Connection Pooling for PostgreSQL

  • 1. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso pgBouncer: um aglomerador de conex˜es para o PostgreSQL Euler Taveira de Oliveira PostgreSQL Brasil 24 de abril de 2009 Euler Taveira de Oliveira PGDay SP
  • 2. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Resumo 1 Introdu¸˜o ca 2 Arquitetura 3 pgBouncer 4 Caso de Sucesso Euler Taveira de Oliveira PGDay SP
  • 3. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Conceito Aglomerador de Conex˜es (connection pooler) ´ um software que o e mant´m uma cache de conex˜es para serem utilizadas em e o requisi¸˜es futuras. co Euler Taveira de Oliveira PGDay SP
  • 4. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Objetivo Diminuir impacto de performance causado pela abertura de novas conex˜es o Euler Taveira de Oliveira PGDay SP
  • 5. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Cen´rio a consultas de curto prazo muitos usu´rios a Euler Taveira de Oliveira PGDay SP
  • 6. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Cen´rio a consultas de curto prazo muitos usu´rios a Aplica¸˜es Web co Euler Taveira de Oliveira PGDay SP
  • 7. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Resumo 1 Introdu¸˜o ca 2 Arquitetura 3 pgBouncer 4 Caso de Sucesso Euler Taveira de Oliveira PGDay SP
  • 8. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso PostgreSQL Euler Taveira de Oliveira PGDay SP
  • 9. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Conex˜o a Euler Taveira de Oliveira PGDay SP
  • 10. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquitetura do Sistema Euler Taveira de Oliveira PGDay SP
  • 11. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Resumo 1 Introdu¸˜o ca 2 Arquitetura 3 pgBouncer 4 Caso de Sucesso Euler Taveira de Oliveira PGDay SP
  • 12. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Modos de Opera¸˜o ca aglomera¸˜o por sess˜o (session pooling) – gentil ca a aglomera¸˜o por transa¸˜o (transaction pooling) ca ca aglomera¸˜o por comando (command pooling) – agressivo ca Euler Taveira de Oliveira PGDay SP
  • 13. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Configura¸˜o ca arquivo de autentica¸˜o ca arquivo de configura¸˜o (formato ini) ca Euler Taveira de Oliveira PGDay SP
  • 14. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquivo de Autentica¸˜o ca idˆntico ao $PGDATA/global/pg auth e pode-se utilizar o mesmo arquivo se o pgBouncer estiver na mesma m´quina do PostgreSQL a Euler Taveira de Oliveira PGDay SP
  • 15. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquivo de Configura¸˜o ca [databases] empresa = host=127.0.0.1 port=5432 dbname=4linux [pgbouncer] listen_addr = 127.0.0.1 listen_port = 6432 auth_type = md5 auth_file = /etc/pgbouncer/users logfile = /var/log/pgbouncer/pgbouncer.log pidfile = /var/run/pgbouncer/pgbouncer.pid admin_users = pedro stats_users = joao, maria pool_mode = transaction max_client_conn = 500 default_pool_size = 100 Euler Taveira de Oliveira PGDay SP
  • 16. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquivo de Configura¸˜o - databases ca Se¸˜o databases ca dbname host port user password pool size client encoding empresa = host=127.0.0.1 port=5432 dbname=4linux Euler Taveira de Oliveira PGDay SP
  • 17. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquivo de Configura¸˜o - pgbouncer ca Op¸˜es Gerais co logfile auth type (trust, any, plain, crypt e md5) auth file ($PGDATA/global/pg auth) pool mode (session, transaction e statement) admin users stat users max client conn default pool size reserve pool size server round robin Euler Taveira de Oliveira PGDay SP
  • 18. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquivo de Configura¸˜o - pgbouncer ca Op¸˜es de Log co syslog syslog facility log connections log disconnections log pooler errors Euler Taveira de Oliveira PGDay SP
  • 19. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Arquivo de Configura¸˜o - pgbouncer ca Verifica¸˜es e Tempo de Espera co server reset query (DISCARD ALL) server check query (SELECT 1) server idle timeout server login retry client login timeout Euler Taveira de Oliveira PGDay SP
  • 20. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Monitoramento SHOW STATS SHOW SERVERS SHOW CLIENTS SHOW POOLS SHOW LISTS SHOW USERS SHOW DATABASES SHOW FDS SHOW CONFIG Euler Taveira de Oliveira PGDay SP
  • 21. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Monitoramento pgbouncer=# show stats; -[ RECORD 1 ]----+----------- database | bench total_requests | 8014 total_received | 3121707 total_sent | 1527374 total_query_time | 1361574602 avg_req | 0 avg_recv | 0 avg_sent | 0 avg_query | 0 Euler Taveira de Oliveira PGDay SP
  • 22. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Controle de Opera¸oes c˜ PAUSE: desconecta todos clientes mas espera consultas terminarem; SUSPEND: para de atender requisi¸˜es; co RESUME: voltar a trabalhar ap´s comandos PAUSE e o SUSPEND; SHUTDOWN: termina o processo do pgBouncer; RELOAD: carrega novamente o arquivo de configura¸˜o. ca Euler Taveira de Oliveira PGDay SP
  • 23. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Controle de Opera¸oes c˜ pgbouncer=# pause; PAUSE pgbouncer=# resume; RESUME pgbouncer=# reload; RELOAD Euler Taveira de Oliveira PGDay SP
  • 24. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Resumo 1 Introdu¸˜o ca 2 Arquitetura 3 pgBouncer 4 Caso de Sucesso Euler Taveira de Oliveira PGDay SP
  • 25. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Caso de Sucesso: last.fm Carga Euler Taveira de Oliveira PGDay SP
  • 26. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Caso de Sucesso: last.fm Mem´ria o Euler Taveira de Oliveira PGDay SP
  • 27. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Caso de Sucesso: last.fm CPU Euler Taveira de Oliveira PGDay SP
  • 28. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Referˆncias e http://pgfoundry.org/projects/pgbouncer/ http://www.postgresql.org/ http://www.postgresql.org.br/ http://www.lastfm.com.br/user/Russ/journal/2008/02/21/ zd postgres connection pools: pgpool vs. pgbouncer Euler Taveira de Oliveira PGDay SP
  • 29. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Vida Longa ao PostgreSQL Euler Taveira de Oliveira PGDay SP
  • 30. Introdu¸˜o ca Arquitetura pgBouncer Caso de Sucesso Perguntas ? Euler Taveira de Oliveira euler@timbira.com http://www.timbira.com/ Euler Taveira de Oliveira PGDay SP