Pengumpulan Sambungan: PgBouncer
Jalankan PgBouncer dalam mod pengumpulan transaksi, tentukan saiz kumpulan dengan betul, dan elakkan perangkap pernyataan yang disediakan.
Pengumpulan Sambungan: PgBouncer ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Mengapa Mengumpulkan Sambungan?
Setiap sambungan PostgreSQL ialah proses OS yang berasingan — menggunakan banyak memori dan CPU. Aplikasi yang membuka dan menutup sambungan bagi setiap permintaan akan cepat menghabiskan kapasiti pelayan. Pengumpulan sambungan menggunakan semula sekumpulan kecil sambungan yang berumur panjang.
Kos bagi Setiap Sambungan
Proses bahagian belakang PostgreSQL biasa menggunakan 5–10 MB RAM. 500 sambungan = kira-kira 5 GB RAM hanya untuk proses bahagian belakang. PgBouncer boleh memultiplekskan ribuan klien kepada 50 sambungan bahagian belakang.
Tiga Mod Pengumpulan
- Sesi — klien mendapat sambungan khusus sepanjang keseluruhan sesi
- Transaksi — klien mendapat satu sambungan bagi setiap transaksi
- Pernyataan — satu sambungan bagi setiap pernyataan (jarang digunakan)
Mod Transaksi (Disyorkan)
Setiap transaksi mendapat satu sambungan pelayan. Klien yang sama mungkin menggunakan sambungan yang berbeza merentas transaksi.
# pgbouncer.ini
[databases]
mydb = host=primary port=5432 dbname=mydb
[pgbouncer]
pool_mode = transaction
listen_port = 6432
max_client_conn = 1000
default_pool_size = 50Perkara yang Perlu Diberi Perhatian dalam Mod Transaksi
Ciri yang memerlukan keadaan sesi akan rosak:
- Pernyataan tersedia (memerlukan bahagian belakang yang sama bagi setiap panggilan)
- SET LOCAL ... (mengikut transaksi adalah baik; SET ... yang kekal merentas transaksi tidak dibenarkan)
- LISTEN / NOTIFY (memerlukan sambungan berterusan)
- Kursor yang terus hidup selepas transaksi
Mod Sesi
Gunakan apabila mod transaksi menyebabkan aplikasi anda bermasalah — tetapi anda akan mendapat lebih sedikit klien serentak.
Menentukan Saiz Kumpulan
Peraturan umum: default_pool_size ≈ vCPU count × 2 + spindles. Terlalu tinggi = pertukaran konteks mengurangkan daya pemprosesan; terlalu rendah = menunggu kumpulan.
PgBouncer di Hadapan HAProxy
Tindanan produksi biasa:
App → HAProxy (read/write routing) → PgBouncer (pooling) → Postgres
Pernyataan Tersedia dalam Mod Transaksi
PgBouncer terkini (1.21+) menyokong pernyataan tersedia pada tahap protokol dalam mod transaksi. Versi lama: gunakan kueri mudah atau mod sesi.
Memantau PgBouncer
Sambung ke pangkalan data pentadbir (pangkalan data khas):
psql -p 6432 -U pgbouncer pgbouncer
-- Commands:
SHOW STATS;
SHOW POOLS;
SHOW CLIENTS;
SHOW SERVERS;Alternatif
- pgpool-II — pengumpulan sambungan + pengimbangan beban + penulisan semula kueri
- Odyssey — pengurus kumpulan sambungan Yandex, berbilang utas
- Kumpulan pada pemacu — biasanya digabungkan dengan PgBouncer untuk pengumpulan sambungan seluruh kelompok
Kumpulan Aplikasi + PgBouncer
Aplikasi biasanya menjalankan kumpulan sambungan sendiri (HikariCP, pgxpool) DAN melalui PgBouncer. Pengumpulan dua lapisan — kumpulan aplikasi mengekalkan sambungan kepada pengantara; pengantara memultiplekskannya kepada PostgreSQL.
Ringkasan
PgBouncer penting pada sebarang skala yang lebih daripada kecil.
- Mod transaksi ialah standard
- Berhati-hati dengan pernyataan tersedia / SET / LISTEN
- Saiz kumpulan ~ vCPU × 2
- Pantau dengan SHOW POOLS
Semakan Pantas
Mod PgBouncer yang manakah memultiplekskan paling banyak klien pada bilangan sambungan pelayan yang paling sedikit?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “Pengumpulan Sambungan: PgBouncer” percuma?
Ya — teks penuh “Pengumpulan Sambungan: PgBouncer” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengumpulan Sambungan: PgBouncer”?
Jalankan PgBouncer dalam mod pengumpulan transaksi, tentukan saiz kumpulan dengan betul, dan elakkan perangkap pernyataan yang disediakan. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Pengumpulan Sambungan: PgBouncer” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- pg_stat_statements: Pertanyaan Teratas
- pgBadger untuk Analisis Log
- Pengumpulan Sambungan: PgBouncer
- Perancangan Kapasiti dan Audit Pengembungan