Ruang penulis
← Kembali ke jurnal
Database

Connection pooling: kenapa aplikasi butuh pool koneksi database

Ketahui alasan koneksi database sebaiknya dipakai ulang, bukan dibuka dan ditutup setiap permintaan.

DTim Diary Coding · 08 Sep 2026 · 2 menit baca

Biaya membuka koneksi

Membuka koneksi baru ke database melibatkan proses jabat tangan jaringan, otentikasi, dan alokasi sumber daya di sisi server. Jika setiap permintaan aplikasi membuka koneksi baru, biaya ini akan berulang terus-menerus.

Apa itu connection pool

Connection pool adalah kumpulan koneksi yang sudah dibuka sebelumnya dan dipakai bergantian oleh permintaan yang datang. Setelah selesai dipakai, koneksi dikembalikan ke pool, bukan ditutup.

// Contoh konfigurasi pool sederhana pada driver PDO (php-pgsql, php-mysql, dll.)
// umumnya diatur lewat konfigurasi koneksi persisten
$pdo = new PDO($dsn, $user, $password, [
    PDO::ATTR_PERSISTENT => true,
]);

Ukuran pool yang wajar

Pool yang terlalu kecil membuat permintaan menunggu koneksi tersedia. Pool yang terlalu besar bisa membebani database karena setiap koneksi memakai memori di sisi server. Ukuran ideal biasanya disesuaikan dengan jumlah proses worker aplikasi dan batas koneksi maksimum database.

Koneksi yang macet

Koneksi yang tidak dikembalikan ke pool, misalnya karena exception yang tidak tertangani, bisa membuat pool kehabisan slot. Pastikan kode selalu mengembalikan atau menutup koneksi lewat blok yang dijamin selalu berjalan.

Pool di level aplikasi vs level infrastruktur

Selain pool bawaan driver, ada juga proxy khusus seperti PgBouncer untuk PostgreSQL yang mengelola pool di luar proses aplikasi. Pendekatan ini berguna ketika banyak instance aplikasi berbagi satu batas koneksi database.

Latihan

Periksa konfigurasi koneksi database pada aplikasi Anda saat ini, lalu cari tahu berapa jumlah koneksi maksimum yang diizinkan database dan bandingkan dengan jumlah proses worker aplikasi.

← Jelajahi catatan lainnya