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

Responder a