Mengapa saya memerlukan Connection-pool ?

  Mengapa saya memerlukannya ?

Applikasi yang saya buat adalah applikasi yang berbasis web, dimana user request yang masuk itu sangat banyak. Jumlah koneksi yang masukpun kadang tidak dapat di prediksi. Kadang banyak kadang kala sedikit. Setiap user request akan membuat satu koneksi ke database, dan ini harus ada.

Dilain pihak, saya mengetahui bahwa proses membuat koneksi di dalam database itu adalah proses yang mahal. Mengapa mahal ? karena proses itu akan memakan resource dari database, baik memory maupun cpu. Resource ini harus tetap ada sampai koneksi tersebut di putus. Nah untuk applikasi web, umumnya koneksi ke database akan dibuat berdasarkan user request, sehingga jumlah koneksinya tidak dapat di prediksi, dan umur koneksinya sangat pendek.

Sekarang mari kita bayangkan, untuk jenis applikasi web, pada saat ada banyak user request untuk informasi singkat, maka yang banyak terjadi adalah eksekusi perintah SELECT di sql. Kemudian koneksi database yang dibuat akan segera di putus. Seandainya seperti ini terjadi terus menerus, maka dapat di bayangkan betapa beratnya kerja database untuk melakukan pembuatan koneksi ini.

Untuk itu kita memerlukan yang namanya Connection Pooling, ya itu suatu teknik dimana akan dibuat sejumlah koneksi database yang permanent / persistent dan koneksi ini akan disimpan untuk dipergunakan untuk melayani semua user request yang masuk. Setiap user request yang masuk akan di beri 1 koneksi, setelah selesai koneksi yang tidak terpakai tersebut di serahkan kembali ke Pooling. Apabila semua koneksi sudah dipergunakan semua, user request yang masuk akan di kumpulkan dalam daftar antrian. Setelah ada koneksi yang selesai, maka user request yang antri tadi akan di beri koneksi tersebut.

Berapa jumlah koneksi yang dapat dibuat ? Ini tergantung konfigurasi applikasi kita. Kita harus dapat menghitung rata rata jumlah  user proses yang dieksekusi secara bersama sama di applikasi kita bukan ke database. Jadi dengan mengetahuhi jumlah itu maka kita dapat menentukan berapa jumlah koneksi yang harus dibuat. Tentu saja ini akan kembali kepada berapa sisa resource yang dimiliki database.

Untuk Applikasi yang saya buat, saya pakai Pgpool-II sebagai connection pooling dan saya buka 30 koneksi. Dengan begini saya membatasi koneksi ke database hanya 30 koneksi. Semua user request akan memanfaatkan 30 koneksi ini.

Bagaimana dengan anda ? .