全部产品
Search
文档中心

PolarDB:Pooling koneksi tingkat transaksi

更新时间:Nov 11, 2025

PolarDB mendukung pooling koneksi tingkat transaksi. Fitur ini dapat digunakan untuk mengurangi beban database akibat banyaknya koneksi.

Prasyarat

Fitur pooling koneksi tingkat transaksi memerlukan proksi database versi 2.3.46 atau lebih baru.

Informasi latar belakang

PolarDB for PostgreSQL menggunakan model koneksi di mana setiap koneksi memerlukan proses khusus. Model ini dapat menyebabkan peningkatan signifikan pada beban database dan penurunan kinerja ketika klien mempertahankan banyak koneksi persisten atau sering membuat koneksi baru.

Untuk meningkatkan kinerja dalam skenario tersebut, PolarDB for PostgreSQL menyediakan fitur pooling koneksi tingkat transaksi. Fitur ini memungkinkan beberapa koneksi frontend berbagi satu koneksi backend, sehingga mengurangi jumlah koneksi backend yang dibuat dan dipertahankan serta meningkatkan daya pemrosesan database.

Cara kerja

Pooling koneksi tingkat transaksi mengurangi jumlah koneksi langsung ke database dan mengurangi beban akibat pembuatan koneksi yang sering terjadi pada skenario dengan koneksi singkat.

Saat Anda mengaktifkan pooling koneksi tingkat transaksi, permintaan klien pertama kali terhubung ke proksi PolarDB. Proksi tidak langsung terhubung ke database backend, melainkan memeriksa kolam koneksi untuk mencari koneksi yang tersedia. Koneksi dianggap tersedia jika nilai `user`, `dbname`, dan variabel sistemnya cocok dengan permintaan. Jika tidak ada koneksi yang cocok, proksi akan membuat koneksi baru ke database; jika ditemukan koneksi yang cocok, proksi akan menggunakannya kembali. Setelah transaksi selesai, koneksi dikembalikan ke kolam untuk permintaan berikutnya. Proses ini mengurangi jumlah koneksi antara proksi database dan database.

Dengan pooling koneksi tingkat transaksi diaktifkan, dapat terdapat ribuan koneksi antara klien dan proksi PolarDB, tetapi hanya puluhan atau ratusan koneksi antara proksi dan database backend.

Proksi PolarDB itu sendiri tidak memiliki batas maksimum koneksi. Batas koneksi ditentukan oleh spesifikasi node komputasi di database backend. Saat pooling koneksi tingkat transaksi dinonaktifkan, setiap koneksi dari klien akan membuat koneksi yang sesuai pada node primer backend dan semua node read-only.

Petunjuk penggunaan

Mengaktifkan pooling koneksi tingkat transaksi

  1. Masuk ke Konsol PolarDB.

  2. Di pojok kiri atas konsol, pilih wilayah tempat kluster berada.

  3. Temukan kluster target dan klik ID kluster tersebut.

  4. Di area Endpoints, klik Configure.

  5. Untuk Connection Pool, klik Transaction-level.

  6. Klik OK.

Menonaktifkan pooling koneksi tingkat transaksi

  1. Masuk ke Konsol PolarDB.

  2. Di pojok kiri atas konsol, pilih wilayah tempat kluster berada.

  3. Temukan kluster target dan klik ID kluster tersebut.

  4. Di area Endpoints, klik Configure.

  5. Di baris Connection Pool, klik Shutdown.

  6. Klik OK.

Batasan

  • Permintaan CANCEL dapat menyebabkan sesi hang jika pooling koneksi tingkat transaksi diaktifkan. Untuk menggunakan fitur CANCEL, Anda harus menonaktifkan pooling koneksi tingkat transaksi.

  • Saat Anda melakukan aksi berikut, koneksi akan terkunci hingga ditutup. Koneksi yang terkunci tidak dikembalikan ke kolam koneksi untuk digunakan klien lain.

    • Menjalankan pernyataan PREPARE

    • Mengirim atau menerima paket besar, seperti yang berukuran lebih dari 16 MB

    • Menggunakan Copy Mode

    • Menggunakan Flush Mode

    • Tabel sementara (Temporary Table), sequence (Sequence), dan tampilan (View)

    • Selama transaksi

    • Mendeklarasikan Cursor

  • Fitur PostgreSQL berikut memiliki masalah kompatibilitas dengan pooling koneksi tingkat transaksi. Menggunakannya dapat menyebabkan perilaku yang tidak diharapkan. Untuk memastikan semantik yang benar, Anda harus menonaktifkan pooling koneksi tingkat transaksi saat menggunakan fitur-fitur ini:

    • Sequence (Sequence)

    • Kunci tingkat aplikasi (advisory lock)

    • Listener dan notifikasi (LISTEN/NOTIFY)

    • Cursor yang dapat dipertahankan (Holdable Cursor)

  • Karena koneksi dapat digunakan kembali, pid yang dikembalikan oleh kueri select pg_backend_pid() untuk koneksi saat ini dapat berubah.

  • Karena koneksi dapat digunakan kembali, alamat IP dan port yang ditampilkan di pg_stat_activity atau Penjelajah SQL mungkin tidak sesuai dengan alamat IP dan port aktual klien.

Memilih kolam koneksi

Gunakan saran berikut untuk memutuskan apakah akan mengaktifkan pooling koneksi tingkat transaksi:

  • Jika aplikasi Anda menggunakan sejumlah kecil koneksi persisten atau sudah memiliki kolam koneksi yang efektif, Anda tidak perlu mengaktifkan fitur kolam koneksi PolarDB.

  • Jika aplikasi Anda menggunakan banyak koneksi (misalnya puluhan ribu) atau merupakan layanan arsitektur tanpa server di mana jumlah koneksi meningkat secara linear seiring dengan skala keluar server, Anda dapat mengaktifkan pooling koneksi tingkat transaksi. Sebelum mengaktifkan fitur ini, pastikan bahwa aplikasi Anda tidak terpengaruh oleh batasan yang dijelaskan dalam topik ini.