PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Manajemen Koneksi di PostgreSQL:Panduan

Kinerja selalu penting dalam sistem apa pun. Anda perlu memanfaatkan sumber daya yang tersedia dengan baik untuk memastikan waktu respons terbaik dan ada berbagai cara untuk melakukannya. Setiap koneksi ke database menghabiskan sumber daya sehingga salah satu cara ini adalah memiliki manajer koneksi yang baik antara aplikasi Anda dan database. Di blog ini, kita akan berbicara tentang pgBouncer, kumpulan koneksi untuk PostgreSQL, dan kami akan menunjukkan cara menerapkannya untuk meningkatkan kinerja PostgreSQL Anda.

Pengumpul Koneksi

Bergantung pada lalu lintas sistem Anda, mungkin berguna untuk menambahkan alat eksternal untuk mengurangi beban pada database Anda yang akan meningkatkan kinerja. Mungkin itu tidak cukup, tetapi ini adalah titik awal yang baik. Untuk ini, ada baiknya untuk menerapkan kumpulan koneksi 

Pengumpulan koneksi adalah metode untuk membuat kumpulan koneksi dan menggunakannya kembali, menghindari membuka koneksi baru ke database sepanjang waktu, yang akan meningkatkan kinerja aplikasi Anda secara signifikan. PgBouncer adalah kumpulan koneksi populer yang dirancang untuk PostgreSQL.

Cara Kerja PgBouncer

PgBouncer bertindak sebagai server PostgreSQL, jadi Anda hanya perlu mengakses database Anda menggunakan informasi PgBouncer (Alamat IP/Nama Host dan Port), dan PgBouncer akan membuat koneksi ke server PostgreSQL, atau akan gunakan kembali jika ada.

Saat PgBouncer menerima koneksi, ia melakukan otentikasi, yang bergantung pada metode yang ditentukan dalam file konfigurasi. PgBouncer mendukung semua mekanisme otentikasi yang didukung oleh server PostgreSQL. Setelah ini, PgBouncer memeriksa koneksi yang di-cache, dengan kombinasi nama pengguna+database yang sama. Jika koneksi cache ditemukan, itu mengembalikan koneksi ke klien, jika tidak, itu membuat koneksi baru. Bergantung pada konfigurasi PgBouncer dan jumlah koneksi yang aktif, koneksi baru mungkin saja diantrekan hingga dapat dibuat, atau bahkan dibatalkan.

Perilaku PgBouncer bergantung pada mode pengumpulan yang dikonfigurasi:

  • pengumpulan sesi (default):Saat klien terhubung, koneksi server akan ditetapkan untuk keseluruhan durasi klien tetap terhubung. Ketika klien terputus, koneksi server akan dimasukkan kembali ke dalam kumpulan.

  • pengumpulan transaksi:Koneksi server ditetapkan ke klien hanya selama transaksi. Saat PgBouncer mengetahui bahwa transaksi telah selesai, koneksi server akan dikembalikan ke pool.

  • pengumpulan pernyataan:Koneksi server akan dimasukkan kembali ke dalam kumpulan segera setelah kueri selesai. Transaksi multi-pernyataan tidak diizinkan dalam mode ini karena akan rusak.

Cara Menerapkan PgBouncer Menggunakan ClusterControl

Untuk ini, kami akan menganggap Anda telah mengaktifkan dan menjalankan cluster PostgreSQL dan Anda menggunakan ClusterControl untuk mengelolanya, jika tidak, Anda dapat mengikuti entri blog ini untuk menerapkan PostgreSQL untuk Ketersediaan Tinggi dengan mudah.

Buka ClusterControl -> Pilih PostgreSQL Cluster -> Cluster Actions -> Tambahkan Load Balancer -> PgBouncer. Di sana Anda dapat menerapkan node PgBouncer baru yang akan diterapkan di node database yang dipilih, atau bahkan mengimpor node PgBouncer yang sudah ada.

Anda perlu menentukan Alamat IP atau Hostname, Listen Port, dan PgBouncer kredensial. Saat Anda menekan Deploy PgBouncer, ClusterControl akan mengakses node, menginstal, dan mengonfigurasi semuanya tanpa intervensi manual.

Anda dapat memantau kemajuan di Bagian Aktivitas ClusterControl. Setelah selesai, Anda perlu membuat Pool baru. Untuk ini, buka ClusterControl -> Pilih cluster PostgreSQL -> Nodes -> PgBouncer Node.

Di sini Anda perlu menambahkan informasi berikut:

  • Nama host PgBouncer:Pilih host node untuk membuat kumpulan koneksi.

  • Nama Kumpulan:Nama kumpulan dan database harus sama.

  • Nama pengguna:  Pilih pengguna dari node utama PostgreSQL atau buat yang baru.

  • Mode Pool:Ini bisa menjadi salah satu mode yang kami sebutkan sebelumnya:sesi (default), transaksi, atau penyatuan pernyataan.

  • Ukuran Kumpulan:Ukuran maksimum kumpulan untuk database ini. Nilai defaultnya adalah 20.

  • Koneksi Basis Data Maks:Mengonfigurasi maksimum seluruh basis data. Nilai defaultnya adalah 0, yang berarti tidak terbatas.

Sekarang, Anda seharusnya dapat melihat Pool di bagian Node.

Ini adalah topologi dasar. Anda dapat meningkatkannya, misalnya, menambahkan node penyeimbang beban, lebih dari satu untuk menghindari satu titik kegagalan, dan menggunakan beberapa alat seperti "Keepalived", untuk memastikan ketersediaan. Itu juga dapat dilakukan dengan menggunakan ClusterControl.

Kesimpulan

Menggunakan PgBouncer sebagai penyambung koneksi adalah cara yang baik untuk meningkatkan kinerja basis data dengan memanfaatkan sumber daya yang tersedia di server dengan baik.

Anda juga dapat meningkatkan topologi ini dengan menggunakan kombinasi PgBouncer + HAProxy untuk mencapai Ketersediaan Tinggi untuk cluster PostgreSQL Anda. Semua hal ini dapat dilakukan dari UI ClusterControl yang sama.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menemukan Nama Batasan di PostgreSQL

  2. Permintaan untuk ORDER BY jumlah baris yang dikembalikan dari SELECT lain

  3. Bagaimana Round() Bekerja di PostgreSQL

  4. Alias ​​referensi dalam klausa WHERE

  5. Ekspor data tabel Postgresql menggunakan pgAdmin