Menjinakkan PostgreSQL dengan PgBouncer: Resepsionis Andal untuk Koneksi Database

Jika kamu pernah mengalami PostgreSQL yang tiba-tiba lambat atau mogok karena terlalu banyak koneksi dari aplikasi, mungkin sudah waktunya kenalan dengan PgBouncer. Di blog ini, kita akan membahas analogi sederhana tentang cara kerja PgBouncer, bagaimana cara instalasinya, dan bagaimana menggunakannya untuk menjaga performa database tetap prima.
π§ Apa itu PgBouncer?
PgBouncer adalah connection pooler untuk PostgreSQL. Tugas utamanya adalah mengatur dan menghemat koneksi database supaya aplikasi tidak langsung membanjiri PostgreSQL dengan terlalu banyak koneksi.
π½οΈ PgBouncer dalam Analogi: Resepsionis Restoran Populer
Bayangkan PostgreSQL sebagai dapur restoran yang cuma bisa melayani 10 pelanggan sekaligus. Tapi kamu punya aplikasi yang membawa 100 pelanggan lapar dalam waktu bersamaan.
Kalau semua pelanggan langsung masuk ke dapur, hasilnya:
- π₯ Dapur jadi overload
- π Layanan melambat
- π₯ Bahkan bisa crash karena “too many connections”
π‘ Solusinya: Tambahkan Resepsionis (PgBouncer)
PgBouncer bertindak sebagai resepsionis di depan restoran:
- Menyambut semua pelanggan (koneksi aplikasi)
- Mengatur giliran masuk ke dapur (database)
- Memastikan dapur hanya melayani pelanggan sesuai kapasitas maksimal
- Kalau ada pelanggan yang cuma tanya hal kecil (query cepat), dia cepat banget masuk-keluar (efisien!)
Mode Operasi PgBouncer:
- Session Pooling: Pelanggan duduk di satu meja dari awal hingga selesai makan. (satu koneksi penuh)
- Transaction Pooling: Pelanggan hanya memesan satu menu, lalu pergi. Meja langsung dipakai pelanggan berikutnya. (lebih efisien)
- Statement Pooling: Pelanggan hanya boleh pesan satu makanan, langsung keluar. (paling cepat dan ringan)
βοΈ Instalasi PgBouncer (Ubuntu/Linux)
|
|
Setelah instalasi, edit file konfigurasi utama biasanya berada di:
|
|
Contoh konfigurasi minimal:
|
|
Contoh isi userlist.txt
yang ada di /etc/pgbouncer/userlist.txt
:
|
|
Kamu bisa generate md5 hash dengan
echo -n 'passwordmyuser' | md5sum
Setelah itu restart pgbouncer:
|
|
π Penggunaan: Arahkan Aplikasi Odoo ke PgBouncer
Ubah konfigurasi Odoo kamu, menjadi:
|
|
Aplikasi sekarang akan berbicara ke PgBouncer, dan PgBouncer yang akan mengatur komunikasi ke PostgreSQL.
β Kapan Harus Menggunakan PgBouncer?
- Aplikasi membuka banyak koneksi ke PostgreSQL secara bersamaan
- Terjadi error “too many connections”
- Ingin meningkatkan efisiensi tanpa mengubah kode aplikasi
- Menggunakan banyak microservices atau layanan serverless
Penutup
PgBouncer adalah solusi ringan namun efektif untuk menjaga performa PostgreSQL tetap stabil dan efisien. Dengan analogi resepsionis restoran, kita bisa melihat betapa pentingnya peran PgBouncer dalam dunia nyata aplikasi dengan trafik tinggi.