Ringkasan Penggabungan Koneksi Terkelola

Penggabungan Koneksi Terkelola memungkinkan Anda menskalakan workload dengan mengoptimalkan penggunaan resource dan latensi koneksi untuk instance Cloud SQL Anda. PostgreSQL membuat proses baru untuk setiap koneksi, yang menimbulkan overhead penggunaan memori dan penyiapan koneksi. Dalam arsitektur yang sering membuat banyak koneksi berumur pendek—seperti microservice atau aplikasi serverless yang berjalan di Cloud Run—overhead ini dapat memengaruhi performa dan skalabilitas database.

Dengan mengaktifkan Managed Connection Pooling, klien terhubung ke cluster kumpulan koneksi perantara, bukan terhubung langsung ke server database. Penetapan dinamis ini memberikan peningkatan performa, terutama untuk koneksi yang diskalakan, dengan menyerap lonjakan koneksi yang tiba-tiba dan menggunakan kembali koneksi database yang ada.

Connection pooler dan connection pool

Saat aplikasi klien terhubung ke instance dengan Penggabungan Koneksi Terkelola diaktifkan, aplikasi tersebut terhubung ke cluster penggabungan koneksi perantara, bukan terhubung langsung ke server database. Cluster connection pool terdiri dari satu atau beberapa connection pooler. Connection pooler adalah layanan proxy database yang mengelola dan merutekan koneksi database antara aplikasi klien dan server database.

Connection pooler mengelola kumpulan koneksi sebagai grup koneksi server database terbuka yang dapat digunakan kembali per pasangan database dan pengguna.

Saat aplikasi klien yang diautentikasi terhubung ke database sebagai pengguna tertentu, connection pooler akan mengarahkan permintaan ke kumpulan koneksi yang sesuai:

  • Jika koneksi server yang tidak ada aktivitas tersedia di kumpulan, connection pooler akan menetapkannya ke permintaan klien.
  • Jika koneksi server tidak ada yang tidak aktif dan batas kumpulan (max_pool_size) belum tercapai, connection pooler akan membuat koneksi server baru di kumpulan.
  • Jika semua koneksi server dalam kumpulan sedang digunakan dan batas kumpulan telah tercapai, klien akan beralih ke status menunggu hingga koneksi server tersedia.
  • Setelah permintaan selesai, koneksi server akan kembali ke kumpulan koneksi untuk digunakan kembali.

Hubungan antara pooler dan pool

Satu connection pooler dapat mengelola beberapa connection pool secara bersamaan, dengan satu pool untuk setiap pasangan pengguna database dan database unik yang terhubung melalui pooler tersebut.

Jika instance Anda menjalankan beberapa connection pooler, setiap connection pooler akan secara independen mengelola kumpulan koneksi terpisah untuk pasangan database dan pengguna yang dirutekan ke instance tersebut.

Kemampuan performa dan penskalaan Penggabungan Koneksi Terkelola beroperasi di beberapa level:

  • Penskalaan cluster connection pool: Jumlah connection pooler dalam cluster diskalakan secara otomatis berdasarkan jumlah core vCPU yang disediakan untuk instance (membagi jumlah vCPU dengan 4, dengan minimum 1 connection pooler). Hal ini memastikan bahwa penggabungan koneksi tidak menjadi bottleneck. Koneksi klien yang masuk didistribusikan di seluruh pooler koneksi yang tersedia. Contoh:

    • Instance dengan 2 atau 4 vCPU menjalankan 1 connection pooler.
    • Instance dengan 8 vCPU menjalankan 2 connection pooler.
    • Instance dengan 16 vCPU menjalankan 4 connection pooler.
    • Instance dengan 32 vCPU menjalankan 8 connection pooler.
    • Instance dengan 64 vCPU menjalankan 16 connection pooler.
  • Penskalaan pooler dan pool: Karena pooler koneksi beroperasi secara independen, semua opsi konfigurasi diterapkan per pooler koneksi, bukan secara global di seluruh instance. Koneksi server dibuat sesuai permintaan hingga batas maksimum yang ditentukan oleh max_pool_size untuk setiap pool terkelola di setiap connection pooler. Misalnya, jika max_pool_size ditetapkan ke 50 pada instance yang menjalankan 2 connection pooler (8 vCPU), setiap connection pooler dapat membuka hingga 50 koneksi server untuk pasangan database dan pengguna tertentu, sehingga memungkinkan total hingga 100 koneksi server di seluruh instance untuk pool tersebut. Penentuan ukuran kumpulan yang akurat sangat penting untuk performa: menetapkan nilai ini terlalu rendah dapat menyebabkan waktu tunggu koneksi yang lebih lama, sedangkan menetapkannya terlalu tinggi dapat memboroskan resource server database.

  • Konfigurasi koneksi klien: Batas koneksi klien dan perilaku waktu tunggu juga dikonfigurasi per connection pooler. Parameter utama mencakup:

    • max_client_connections: Membatasi jumlah maksimum koneksi klien yang diizinkan per connection pooler (nilai defaultnya adalah 5.000 koneksi untuk setiap connection pooler).
    • client_connection_idle_timeout: Mengontrol durasi koneksi klien dapat tetap tidak aktif sebelum waktu tunggu habis.
    • query_wait_timeout: Mengontrol durasi kueri menunggu koneksi server yang tersedia di pool sebelum waktu tunggu habis.

Kasus penggunaan dan pertimbangan

Perhatikan hal-hal berikut saat Anda menggunakan Penggabungan Koneksi Terkelola:

  • Meskipun Anda dapat menggunakan Managed Connection Pooling untuk workload transaksional apa pun, fitur ini memberikan manfaat throughput dan latensi terbesar untuk aplikasi yang berisi koneksi berumur pendek, atau aplikasi yang mengakibatkan lonjakan koneksi.
  • Untuk koneksi yang berumur panjang, performa koneksi menggunakan Penggabungan Koneksi Terkelola dapat sedikit lebih rendah daripada saat menggunakan koneksi langsung. Dalam hal ini, Penggabungan Koneksi Terkelola menyediakan penskalaan koneksi saat jumlah koneksi sangat tinggi. Namun, untuk aplikasi yang biasanya membuat koneksi yang berjalan lama, sebaiknya hindari penggunaan penggabungan koneksi.
  • Anda dapat menggunakan Identity and Access Management untuk mengamankan koneksi ke instance, bergantung pada port yang digunakan Penggabungan Koneksi Terkelola. Untuk mengetahui informasi selengkapnya tentang cara kerja IAM di Cloud SQL dan batasannya, lihat Autentikasi IAM.

Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan Penggabungan Koneksi Terkelola, lihat Mengonfigurasi Penggabungan Koneksi Terkelola.

Persyaratan

Untuk menggunakan Managed Connection Pooling, instance Anda harus memenuhi persyaratan berikut:

  • Instance Anda harus merupakan instance edisi Cloud SQL Enterprise Plus.
  • Anda harus terhubung ke instance hanya menggunakan koneksi langsung atau Cloud SQL Auth Proxy.
  • Instance Anda harus disiapkan untuk akses layanan pribadi, menggunakan IP publik, atau mengaktifkan Private Service Connect.
  • Instance Anda harus menggunakan arsitektur jaringan Cloud SQL yang baru.
  • Penggabungan Koneksi Terkelola memerlukan nomor versi pemeliharaan minimum POSTGRES_$version.R20250727.00_14. Untuk mengetahui informasi selengkapnya tentang cara melakukan pemeliharaan mandiri, lihat Melakukan pemeliharaan mandiri.

Opsi penggabungan

Penggabungan Koneksi Terkelola memungkinkan Anda mengelola cara koneksi digabungkan menggunakan parameter pool_mode. Anda dapat menggunakan opsi penggabungan berikut:

  • transaction (default): menggabungkan koneksi di tingkat transaksi. Koneksi dikembalikan ke pool setelah setiap transaksi selesai. Cloud SQL merekomendasikan penggunaan mode penggabungan transaction untuk koneksi berumur pendek.
  • session: menggabungkan koneksi di tingkat sesi. Setiap sesi menggunakan koneksi server khusus yang mempertahankan status sesi. Hal ini mengurangi efisiensi penggabungan. Saat klien terputus, koneksi server akan kembali ke kumpulan koneksi.

Opsi konfigurasi lanjutan

Anda dapat menyesuaikan Penggabungan Koneksi Terkelola menggunakan opsi konfigurasi berikut.

Nama konfigurasi Deskripsi
max_pool_size Jumlah maksimum koneksi server yang diizinkan ke pasangan database dan pengguna di setiap kumpulan koneksi. Konfigurasi ini diterapkan per pooler koneksi. Tentukan nilai ini berdasarkan ukuran instance dan persyaratan ukuran kumpulan Anda.

Nilai defaultnya adalah 50 koneksi per database dan pasangan pengguna untuk setiap connection pooler.
min_pool_size Jumlah minimum koneksi server yang tersedia kapan saja di setiap kumpulan koneksi. Konfigurasi ini diterapkan per connection pooler. Tentukan nilai ini berdasarkan persyaratan ukuran instance dan ukuran pool Anda.

Jika jumlah koneksi server kurang dari min_pool_size, setelan ini akan menambahkan lebih banyak koneksi server ke kumpulan. Hal ini membantu mengelola peningkatan beban database yang tiba-tiba setelah periode tidak aktif dan memastikan koneksi tersedia dan siap digunakan.

Nilai defaultnya adalah 0 koneksi.
max_client_connections Jumlah maksimum koneksi klien yang diizinkan per penggabung koneksi saat menggunakan Penggabungan Koneksi Terkelola. Tentukan nilai ini berdasarkan persyaratan ukuran instance dan ukuran kumpulan Anda.

Nilai defaultnya adalah 5,000 koneksi untuk setiap connection pooler.
max_prepared_statements Jumlah maksimum pernyataan yang disiapkan bernama tingkat protokol yang didukung per penggabung koneksi dalam mode penggabungan transaction. Tentukan nilai ini berdasarkan persyaratan ukuran instance dan ukuran pool Anda.

Menetapkan opsi ini ke 0 akan menonaktifkan dukungan pernyataan yang disiapkan. Untuk performa yang optimal, nilai ini harus melebihi jumlah pernyataan yang disiapkan yang umum digunakan dalam database Anda. Jumlah pernyataan yang disiapkan yang tinggi di Penggabungan Koneksi Terkelola dapat menyebabkan peningkatan penggunaan memori.

Nilai defaultnya adalah pernyataan 0.
client_connection_idle_timeout Waktu koneksi klien tetap tidak ada aktivitas sebelum waktu tunggu habis. Nilai ini dapat berkisar dari 0 hingga 2,147,483 detik, dan nilai defaultnya adalah 0 detik.
server_connection_idle_timeout Waktu koneksi server tetap tidak ada aktivitas sebelum waktu habis. Nilai ini dapat berkisar dari 0 hingga 2,147,483 detik, dan nilai defaultnya adalah 600 detik.
query_wait_timeout Waktu tunggu kueri untuk koneksi server dalam kumpulan sebelum waktu tunggu habis.

Menyetel opsi ini ke 0 akan menonaktifkannya, sehingga memungkinkan antrean klien tanpa batas. Mengaktifkan opsi ini akan mencegah server yang tidak responsif menahan koneksi.

Nilai ini dapat berkisar dari 0 hingga 2,147,483 detik, dan nilai defaultnya adalah 120 detik.
ignore_startup_parameters Parameter yang ingin Anda abaikan, yang tidak dilacak dalam paket startup Penggabungan Koneksi Terkelola secara default.
server_lifetime Waktu maksimum koneksi server tidak digunakan sebelum Penggabungan Koneksi Terkelola menutupnya. Jika nilai ditetapkan ke 0 detik, koneksi akan segera ditutup setelah digunakan.

Nilai default-nya adalah 3600 detik.

Batasan

Saat menggunakan Penggabungan Koneksi Terkelola dengan instance edisi Cloud SQL Enterprise Plus, pertimbangkan batasan berikut:

  • Mengaktifkan Penggabungan Koneksi Terkelola pada instance yang ada akan menyebabkan database dimulai ulang.
  • Penggabungan Koneksi Terkelola hanya dapat digunakan dengan Cloud SQL Auth Proxy versi 2.15.2 dan yang lebih baru.
  • Jika Anda menggunakan Cloud SQL Go Language Connector, sebaiknya gunakan versi Go minimum 1.24. Jika Anda menggunakan Go versi 1.23 atau yang lebih lama, Anda mungkin mengalami batasan performa saat menggunakan Penggabungan Koneksi Terkelola.
  • Jika Anda menggunakan Penggabungan Koneksi Terkelola dalam mode penggabungan transaction, fitur SQL berikut tidak didukung:

    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tabel sementara
    • LOAD
    • Kunci penasihat tingkat sesi
  • Jika Anda menggunakan library antarmuka database asyncpg untuk pooler Managed Connection Pooling di port 3307 dan 6432, Anda harus memperbarui max_prepared_statements ke nilai yang lebih besar dari 0 untuk mengaktifkan dukungan untuk pernyataan yang disiapkan di pooler Managed Connection Pooling.

  • Jika Anda menggunakan Cloud SQL untuk PostgreSQL versi 17, opsi sslnegotiation=direct tidak didukung.

  • Pelacakan IP klien tidak didukung dengan Managed Connection Pooling. Jika Anda mengaktifkan simpan alamat IP klien di Query Insights, alamat IP klien akan ditampilkan sebagai local, bukan alamat IP itu sendiri.

Port yang digunakan oleh Penggabungan Koneksi Terkelola

Saat Anda mengaktifkan Penggabungan Koneksi Terkelola, port yang digunakan oleh instance Cloud SQL untuk menyalurkan traffic database akan berubah. Anda dapat menggunakan Identity and Access Management untuk mengamankan koneksi, bergantung pada port-nya.

Port yang digunakan oleh Penggabungan Koneksi Terkelola dan opsi IAM yang tersedia adalah sebagai berikut:

  • Port TCP 5432: digunakan untuk koneksi langsung oleh server database Postgres. Ini adalah nomor port default untuk terhubung langsung menggunakan klien psql.

  • Port TCP 6432: digunakan untuk koneksi langsung oleh server Managed Connection Pooling. Untuk terhubung menggunakan port ini, tentukan psql -p 6432 saat terhubung langsung menggunakan klien psql.

    Anda dapat menggunakan opsi autentikasi IAM apa pun saat menggunakan port ini.

  • Port TCP 3307: digunakan untuk koneksi khusus Cloud SQL Auth Proxy oleh server Managed Connection Pooling. Saat Anda menggunakan Cloud SQL Auth Proxy untuk terhubung ke Penggabungan Koneksi Terkelola, nomor port ini dikonfigurasi dengan klien Cloud SQL Auth Proxy dan tidak dapat diubah.

    Anda dapat menggunakan opsi autentikasi IAM, atau autentikasi database IAM otomatis dengan port ini.

Koneksi server yang digunakan oleh Penggabungan Koneksi Terkelola

Konfigurasi database max_connections membatasi jumlah maksimum koneksi server yang dapat digunakan oleh pooler di Penggabungan Koneksi Terkelola. Cloud SQL merekomendasikan untuk menyesuaikan nilai ini berdasarkan persyaratan workload instance Anda dan ukuran instance database. Selama beban puncak, jumlah koneksi untuk autentikasi bisa menjadi sangat tinggi.

Jika Anda menggunakan max_pool_size default sebanyak 50 koneksi per pool, sebaiknya cadangkan setidaknya 15 koneksi server per CPU untuk Managed Connection Pooling saat Anda menetapkan flag max_connections untuk database Anda. Untuk mengetahui informasi selengkapnya tentang flag max_connections, lihat Koneksi serentak maksimum. Untuk mengubah flag max_connections untuk instance Anda, lihat Mengonfigurasi flag database.

Langkah berikutnya