Já disseram que para um pool de conexões, o pgbouncer é melhor que o
pgpool, ainda continua assim?
O pgbouncer é *mais eficiente* que o pgpool na função de aglomerador de
conexões. Sim, isso continua sendo verdadeiro *na maioria dos casos*.
Nada impede que o pgpool seja usado em conjunto com o pgbouncer se forem
necessárias outras funcionalidades do primeiro que o segundo não tem.
Como ambos tratam as transações (BEGIN, COMMIT e ROLLBACK)? Pelo fato de
utilizarem o mesmo canal de conexão, eu corro o risco de quando comitar
uma requisição de alguém, acabar comitando uma outra requisição de
outrem indevidamente?
Você não corre esse risco.
O pgbouncer possui três modos de operação:
- No modo conexão o pgbouncer "liga" uma conexão do banco para uma
conexão da entrada enquanto ela existir, portanto, risco zero pois a
conexão do banco só será "ligada" a outra conexão da entrada quando a
anterior for encerrada.
- No modo transação a "ligação" e chaveamento das diversas conexões de
entrada com as conexões de banco se dá justamente quando uma transação
termina por commit ou rollback.
- Apenas num deles, modo statement, não há controle de transações e,
mesmo assim, caso a aplicação cliente tente abrir uma transação com
begin, o pgbouncer vai reclamar e emitir um erro, impedindo a
continuação dessa transação.
O pgpool só tem um modo de operação baseado na "ligação" entre uma
conexão da entrada com uma conexão do banco enquanto a conexão da
entrada existir, portanto, o ciclo de vida da conexão é 100% respeitado
e não há mistura, como no modo conexão do pgbouncer.
[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral