Use este identificador para citar ou linkar para este item:
https://repositorio.ufu.br/handle/123456789/49993| ORCID: | http://orcid.org/0009-0002-1400-6772 |
| Tipo do documento: | Trabalho de Conclusão de Curso |
| Tipo de acesso: | Acesso Aberto |
| Título: | Connection pooling em postgresql: caracterização empírica do ponto de equilíbrio entre sobrecarga e contenção |
| Título(s) alternativo(s): | connection pooling in postgresql: empirical characterization of the break-even point between overhead and contention |
| Autor(es): | Moreira, Jean Souto Galvão |
| Primeiro orientador: | Lima, Maria Adriana Vidigal de |
| Primeiro membro da banca: | Fernandes, Márcia Aparecida |
| Segundo membro da banca: | Araújo, Rafael Dias |
| Resumo: | Sistemas de banco de dados PostgreSQL sofrem degradação severa de desempenho sob alta concorrência de conexões, em razão do modelo process-per-connection e da contenção em estruturas internas de locking. Os connection poolers são a mitigação padrão da indústria, mas a decisão de adotá-los costuma se apoiar em heurísticas, e não em evidência quantitativa, pois falta uma caracterização pública do ponto de concorrência a partir do qual o pooler compensa a sobrecarga que introduz. Este trabalho investiga essa transição por meio de uma análise empírica controlada de seis configurações de conexão sobre PostgreSQL 18 em nuvem AWS: conexão direta (baseline), PgBouncer e PgCat nos modos transaction e session, e o AWS RDS Proxy. Ao longo de 1.332 ensaios, variaram-se a carga de trabalho, o modo de query, a concorrência e o tamanho do pool, com instrumentação não apenas do cliente, mas também do interior do servidor. Os resultados indicam a existência de um ponto de equilíbrio: em baixa concorrência, o pooler apenas acrescenta latência; acima de algumas dezenas de clientes (cerca de 30 na carga de escrita), a conexão direta colapsa por contenção, enquanto o pooler mantém a vazão estável. A instrumentação do servidor atribui esse ganho à redução da contenção interna de locks, e não a um custo de conexão menor. A arquitetura multi-thread (PgCat) só supera a single-thread (PgBouncer) quando o próprio pooler se torna o recurso crítico, e o pooling gerenciado (RDS Proxy) apresenta teto de vazão inferior ao das alternativas auto-hospedadas. O estudo oferece uma caracterização aberta e reprodutível desse ponto de equilíbrio para PostgreSQL, sustentada por evidência causal coletada no servidor. |
| Abstract: | PostgreSQL database systems suffer severe performance degradation under high connection concurrency, owing to their process-per-connection model and contention in internal locking structures. Connection poolers are the industry-standard mitigation, but the decision to adopt one usually rests on heuristics rather than quantitative evidence, since there is no public characterization of the concurrency point beyond which a pooler offsets the overhead it introduces. This work investigates that transition through a controlled empirical analysis of six connection configurations over PostgreSQL 18 in an AWS cloud environment: a direct connection (baseline), PgBouncer and PgCat in transaction and session modes, and AWS RDS Proxy. Across 1,332 trials, the workload, query mode, concurrency, and pool size were varied, with instrumentation of both the client and the server internals. The results indicate a break-even point: at low concurrency the pooler merely adds latency; beyond a few dozen clients (about 30 under the write workload), the direct connection collapses under contention while the pooler keeps throughput stable. Server-side instrumentation attributes this gain to reduced internal lock contention rather than to a lower connection cost. The multi-threaded pooler (PgCat) outperforms the single-threaded one (PgBouncer) only when the pooler itself becomes the critical resource, and managed pooling (RDS Proxy) shows a lower throughput ceiling than the self-hosted alternatives. The study provides an open, reproducible characterization of this break-even for PostgreSQL, grounded in causal evidence collected at the server. |
| Notas: | Código-fonte, infraestrutura e informações do experimento disponíveis em: https://github.com/jean-souto/postgres-pooler-benchmark-tcc |
| Palavras-chave: | PostgreSQL Connection pooling PgBouncer PgCat Contenção de locks Computação em nuvem Lock contention Cloud computing |
| Área(s) do CNPq: | CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::BANCO DE DADOS |
| Idioma: | por |
| País: | Brasil |
| Editora: | Universidade Federal de Uberlândia |
| Referência: | MOREIRA, Jean Souto Galvão. Connection pooling em PostgreSQL: caracterização empírica do ponto de equilíbrio entre sobrecarga e contenção. 2026. 63 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) – Universidade Federal de Uberlândia, Uberlândia, 2026. |
| URI: | https://repositorio.ufu.br/handle/123456789/49993 |
| Data de defesa: | 31-Jul-2026 |
| Aparece nas coleções: | TCC - Ciência da Computação |
Arquivos associados a este item:
| Arquivo | Tamanho | Formato | |
|---|---|---|---|
| connection-pooling-postgresql (1).pdf | 6.35 MB | Adobe PDF | Visualizar/Abrir |
Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.