Hal yang perlu kamu tahu tentang Connection Pooling pada PostgreSQL
by Azman Agung Nugraha
November 13, 2025
Connection pooling adalah metode untuk membuat “wadah” dan menyimpan koneksi agar dapat digunakan kembali saat dibutuhkan.
PostgreSQL memiliki proses postmaster, dimana setiap ada koneksi baru ke database, akan memicu proses baru di backend database yang memerlukan memori 2-3 MB. Tanpa adanya connection pooling, dengan sistem postmaster yang terus menerus membuat proses baru, maka penggunaan memori akan semakin meningkat dan beresiko menimbulkan masalah jika jumlah koneksi terlalu tinggi (terutama pada aplikasi kritikal).
Karenanya, untuk menghindari beban memori dari proses tersebut, connection pooling menampung semua koneksi dari aplikasi front-end dalam sebuah pool. Setelahnya, ketika sesi atau transaksi sudah selesai, koneksi tersebut akan dikembalikan ke pool agar bisa digunakan kembali.
Bagaimana Connection Pooling dapat membantu Performa?
Dalam sejumlah kasus yang dialami oleh customer kami, terdapat beberapa permintaan untuk membuat koneksi ke database yang sama dengan detail username yang juga sama. Dalam situasi seperti ini, Connection Pooler tidak membuat koneksi baru setiap kalinya, melainkan menggunakan kembali koneksi yang sudah ada di pool. Pendekatan ini membantu mengurangi overhead karena tidak perlu membuat koneksi baru untuk setiap permintaan yang menggunakan detail pengguna dan database yang sama. Dengan demikian, connection pooling sangat berguna ketika terdapat banyak koneksi yang berlangsung secara bersamaan ke database.
Meskipun PostgreSQL tidak memiliki pooler koneksi bawaan, sebagian besar perangkat lunak yang digunakan sebagai server aplikasi menyediakan connection pool nya sendiri.
PostgreSQL memang menyediakan dua tools andalan yang dirancang untuk mengurangi penggunaan sumber daya berlebih akibat banyaknya koneksi ke database, yaitu:
- PGPOOL (nanti ada link ke Article Pgpool)
- PGBOUNCER
- Session Pooling: Koneksi server dijalankan ke aplikasi klien selama sesi masih berlangsung, lalu dikembalikan ke pool setelah sesi berakhir (metode default).
- Transaction Pooling: Koneksi server hanya akan di-maintain dalam durasi transaksi saja. Setelah transaksi selesai, koneksi akan segera dilepaskan kembali ke pool.
- Statement Pooling: Koneksi server dijalankan ke aplikasi klien untuk setiap statement. Begitu statement tersebut tereksekusi, koneksi server dikembalikan ke pool. Transaksi multi-statement tidak diizinkan untuk mode ini.
Cara menginstal dan mengkonfigurasi Pgbouncer:
Saya akan menggunakan Pgbouncer versi 1.24 pada mesin Rocky Linux 9 untuk ini.
Instalasi:
1 ) Unduh file pgbouncer-1.24.0.tar.gz di mesin Linux Anda untuk instalasi. Anda dapat mengunduhnya dari Pgbouncer Download.
2 ) Ekstrak file, ini akan membuat folder bernama pgbouncer-1.24.0.
3 ) Harap pastikan bahwa paket gcc, libevent-devel dan openssl-devel diinstal sebelum melanjutkan dengan konfigurasi. Pindah ke folder pgbouncer-1.24.0 dan jalankan:
- # ./configure –prefix=/opt/pgbouncer
–prefix akan memungkinkan Anda untuk menentukan direktori kustom untuk instalasi. Secara default, itu akan di instal di /usr/local
4 ) Setelah mengkonfigurasi, jalankan perintah di bawah ini untuk menginstal Pgbouncer
- # make
- # make install
5 ) Setelah instalasi, file konfigurasi Anda dan file run Pgbouncer akan diinstal di lokasi di bawah ini
- /opt/pgbouncer/share/doc/pgbouncer
- /opt/pgbouncer/bin
6 ) Untuk memulai Pgbouncer dalam mode daemon, jalankan perintah di bawah ini :
- # pgbouncer -d /opt/pgbouncer/share/doc/pgbouncer/pgbouncer.ini
- pgbouncer.ini – File ini berisi semua parameter yang perlu dikonfigurasi untuk Pgbouncer Anda
- userlist.txt – File ini berisi nama pengguna dan kata sandi basis data Anda untuk otentikasi.
- Pgbouncer.ini

Benchmarkdb dan enterprise adalah nama alias untuk dua string koneksi. Harap dicatat, pool_size telah ditetapkan untuk tujuan pengujian saja. Ini bukan nilai yang direkomendasikan.
- Userslist.txt
![]()
File ini mengambil input sebagai “nama pengguna” “kata sandi”. Di mana kata sandi dapat berupa format biasa atau format md5. Kami telah menggunakan kata sandi berformat md5 untuk kedua pengguna.
- Sekarang restart saja layanan pgbouncer seperti di bawah ini
# pgbouncer -R -d /etc/pgbouncer/pgbouncer.ini
Sekarang, untuk memeriksa & memvalidasi dampak dari connection pooler, kita akan menggunakan pgbench untuk benchmarking dan pgbouncer dalam mode session pooling.
- pgbench telah diinisialisasi dengan faktor skala 30. pgbouncer memiliki pool_size 100.
- Kami akan menguji skenario dengan peningkatan koneksi bersamaan mulai dari 300, 400 dan 460. Untuk setiap koneksi, pgbench akan menjalankan 20 transaksi yang akan menghasilkan total 6000, 8000 dan 9200 transaksi masing-masing.
Di bawah ini adalah output dari analisis pengujian

Analisis aktivitas umum untuk koneksi
- Koneksi melalui Pgbouncer

- Koneksi langsung ke database

Pengujian dapat dilakukan dengan konfigurasi yang berbeda untuk pool_size dan pool_mode untuk hasil yang lebih baik sesuai kebutuhan aplikasi.
Terlepas dari detail pool_size, pool_mode dan koneksi, Anda juga dapat mengatur parameter lain di file konfigurasi pgbouncer. Beberapa parameter berguna lainnya adalah sebagai berikut:
- min_pool_size – Parameter ini menentukan jumlah minimum koneksi server di pool. Setiap saat menggunakan pgbouncer, Anda akan melihat banyak koneksi di server Anda baik idle atau aktif.
- reserve_pool_size – Koneksi tambahan untuk digunakan jika terjadi masalah.
- server_idle_timeout (seconds) – Semua koneksi server akan dihapus setelah tidak digunakan selama beberapa detik ini.
- idle_transaction_timeout (seconds) – Tutup koneksi yang berada dalam status ‘idle in transaction’ selama beberapa detik ini.
- max_client_conn – Jumlah total klien yang dapat terhubung.
Dari hasil grafik di atas, dapat disimpulkan bahwa peningkatan jumlah koneksi bersamaan justru meningkatkan throughput keseluruhan saat menggunakan Pgbouncer. Hal ini membuktikan efektivitas connection pooling dalam mengurangi beban pembuatan koneksi baru dan menjaga kinerja sistem tetap stabil pada skala yang lebih besar.
Setelah memahami bagaimana Pgbouncer bekerja, selanjutnya kita akan mengulas bagaimana Pgpool menjaga performa sistem melalui fitur-fitur andalannya. Nantikan pembahasannya di artikel berikutnya!