Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Lakebase Autoscaling adalah versi terbaru Lakebase, dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk wilayah yang didukung, lihat Ketersediaan wilayah. Jika Anda adalah pengguna Lakebase Provisioned, lihat Lakebase Provisioned.
Lakebase menyertakan pengumpul koneksi PgBouncer bawaan yang memelihara kumpulan koneksi server dan membagikannya di banyak koneksi klien. Pooler mendukung hingga 10.000 koneksi bersamaan, sehingga cocok untuk fungsi tanpa server, API web, dan aplikasi lain yang membuka banyak koneksi berumur pendek.
Pengumpulan koneksi memerlukan autentikasi kata sandi Postgres asli. Ini tidak tersedia untuk peran identitas OAuth atau Azure Databricks.
Cara kerja pengumpulan koneksi
Setiap koneksi Postgres menggunakan sumber daya server karena Postgres membuat proses terpisah untuk setiap klien. Aplikasi yang membuka banyak koneksi berumur pendek, seperti API web dan fungsi tanpa server, dapat menghabiskan batas koneksi server dengan cepat.
Pengumpul koneksi berada di antara aplikasi Anda dan Postgres. Klien terhubung ke pengumpul, dan pengumpul meneruskan kueri ke kumpulan koneksi server yang lebih kecil. Ketika transaksi selesai, pengumpul mengembalikan koneksi server ke kumpulan, membuatnya tersedia untuk klien berikutnya.
Lakebase menjalankan PgBouncer dalam mode transaksi. Dalam mode transaksi, koneksi server disimpan selama satu transaksi dan kemudian dikembalikan ke kumpulan. Ini memungkinkan banyak klien berbagi kumpulan kecil koneksi server.
Mode transaksi meningkatkan efisiensi koneksi tetapi membatasi fitur Postgres tertentu yang memerlukan koneksi server persisten. Lihat Batasan mode transaksi.
Kumpulan koneksi
PgBouncer membuat kumpulan terpisah untuk setiap kombinasi database dan pengguna. Dua pengguna yang tersambung ke database yang sama mendapatkan kumpulan independen. Ukuran setiap kumpulan adalah sekitar 90% dari batas koneksi langsung komputasi.
Ketika semua koneksi dalam kumpulan sedang digunakan, permintaan klien baru menunggu dalam antrean. Jika koneksi server tidak tersedia dalam waktu 2 menit, klien akan menerima kesalahan batas waktu.
Batas koneksi
Tiga batas mengatur pengumpulan koneksi:
| Batasan | Nilai | Apa yang dikontrolnya |
|---|---|---|
Koneksi klien (max_client_conn) |
10,000 | Koneksi maksimum dari aplikasi Anda ke PgBouncer |
Ukuran kumpulan (default_pool_size) |
~90% dari max_connections |
Koneksi server aktif per pasangan (pengguna, database) |
Koneksi langsung (max_connections) |
Bervariasi menurut ukuran komputasi | Koneksi Postgres langsung maksimum |
Batas koneksi langsung tergantung pada ukuran komputasi Anda. Misalnya, komputasi CU 8 mendukung 1.678 koneksi langsung dan komputasi CU 16 mendukung 3.357. Untuk daftar lengkapnya, lihat Spesifikasi komputasi.
Pooling koneksi memungkinkan aplikasi Anda mendukung jauh lebih banyak pengguna bersamaan daripada yang diizinkan oleh batas koneksi langsung saja.
Prasyarat
- Proyek Autoscaling Lakebase Anda harus aktif.
- Anda harus memiliki peran kata sandi Postgres asli dalam proyek. Untuk petunjuknya, lihat Membuat peran kata sandi Postgres asli.
- Untuk menggunakan pengumpul baca-saja, Anda harus memiliki titik akhir ketersediaan tinggi dengan Izinkan akses ke instans komputasi baca-saja diaktifkan. Lihat Ketersediaan tinggi.
Aktifkan pengumpulan koneksi
- Di Aplikasi Lakebase, buka proyek Anda dan klik Sambungkan.
- Pilih cabang dan komputasi yang ingin Anda sambungkan.
- Dari menu drop-down Peran , pilih peran kata sandi Postgres asli. Tombol Pengumpulan koneksi hanya terlihat saat peran kata sandi dipilih. Ini disembunyikan untuk peran identitas OAuth dan Azure Databricks.
- Aktifkan Penggunaan koneksi bersama.
- Salin string koneksi dan gunakan di aplikasi Anda.
Format koneksi string
String koneksi pooler menggunakan nama host yang berbeda dari koneksi database langsung:
| Tipe | Format nama host | Kapan digunakan |
|---|---|---|
| Pengumpul baca-tulis | <endpoint-id>-pooler.<region>.<cloud>.databricks.com |
Semua lalu lintas tulis dan baca dirutekan melalui pooler |
| Pooler Baca-Saja | <endpoint-id>-ro-pooler.<region>.<cloud>.databricks.com |
Membaca lalu lintas saja. Memerlukan titik akhir ketersediaan tinggi dengan akses baca diaktifkan. |
Kedua jenis pooler menggunakan port 5432.
Note
Salin pooler string koneksi Anda langsung dari dialog Connect di Aplikasi Lakebase untuk mendapatkan hostname yang benar untuk endpoint, wilayah, dan cloud Anda.
Batasan mode transaksi
Fitur Postgres berikut ini tidak tersedia saat menggunakan pengumpul koneksi:
Pernyataan yang disiapkan tingkat SQL:
PREPAREdanDEALLOCATEpernyataan tidak didukung dalam mode transaksi. Pernyataan yang telah disiapkan pada level driver (digunakan secara internal oleh psycopg2, node-postgres, JDBC, dan pustaka serupa) berfungsi dengan baik melalui dukungan tingkat protokol PgBouncer. Untuk JDBC, jika Anda melihat kesalahan yang terkait dengan pernyataan yang disiapkan sisi server bernama, aturprepareThreshold=0untuk menonaktifkan penyimpanan sementara pernyataan tersebut.Pengaturan tingkat sesi:
SETperintah tidak bertahan di seluruh transaksi karena setiap transaksi dapat menggunakan koneksi server yang berbeda. Contohnya:BEGIN; SET search_path TO myschema; SELECT * FROM mytable; -- works in this transaction COMMIT; -- connection returns to pool after COMMIT SELECT * FROM mytable; -- ERROR: relation "mytable" does not existUntuk menerapkan pengaturan secara permanen, gunakan
ALTER ROLEsebagai gantinya:ALTER ROLE myrole SET search_path TO myschema, public;Tabel sementara dalam sesi: Tabel sementara yang berlangsung di antara transaksi tidak tersedia. Koneksi yang dikembalikan ke pool dapat ditetapkan ke klien lain pada transaksi berikutnya.
WITH HOLDkursor: Kursor yang dideklarasikan denganWITH HOLDmemerlukan koneksi persisten dan tidak didukung.Kunci penasihat: PgBouncer tidak mendukung kunci penasihat. Kunci penasihat memerlukan koneksi server persisten, yang tidak tersedia dalam mode transaksi.
LISTEN/NOTIFY: Tidak didukung. Gunakan koneksi langsung (tanpa kumpulan) untuk aplikasi yang memerlukan pengiriman pesan (pub/sub).pg_dumpdan migrasi skema: Gunakan koneksi langsung untukpg_dump, migrasi skema, dan alat lain yang mengandalkan status tingkat sesi.
Note
Untuk aplikasi yang memerlukan fitur pada level sesi Postgres, gunakan string koneksi langsung dari dialog Connect tanpa mengaktifkan toggle pooling koneksi.
Langkah berikutnya
- String koneksi: Referensi format string koneksi untuk koneksi langsung. Lihat String koneksi.
- Buat peran Postgres: Cara membuat peran kata sandi Postgres asli yang diperlukan untuk pengumpulan koneksi. Lihat Membuat peran Postgres.
- Tentang autentikasi: Perbandingan OAuth dan metode autentikasi kata sandi. Lihat Tentang autentikasi.