Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Lakebase, bir sunucu bağlantıları havuzu tutan ve bunları birçok istemci bağlantısında paylaşan yerleşik bir PgBouncer bağlantı havuzu oluşturucu içerir. Havuz oluşturucu 10.000'e kadar eşzamanlı istemci bağlantısını destekleyip sunucusuz işlevler, web API'leri ve birçok kısa süreli bağlantı açan diğer uygulamalar için uygun olmasını sağlar.
Bağlantı havuzu yerel Postgres parola kimlik doğrulaması gerektirir. OAuth rolleri için kullanılamaz.
Bağlantı havuzu nasıl çalışır?
Postgres her istemci için ayrı bir işlem oluşturduğundan her Postgres bağlantısı sunucu kaynaklarını kullanır. Eşzamanlı bağlantılar büyüdükçe, sunucunun bağlantı sınırını hızla tüketebilir.
Bağlantı havuzu oluşturucu, uygulamanızla Postgres arasında yer alır. İstemciler havuza bağlanır ve havuz oluşturucu sorguları gerçek sunucu bağlantılarının daha küçük bir havuzuna iletir. Lakebase, PgBouncer'ı işlem modunda çalıştırır, bu nedenle sunucu bağlantısı yalnızca tek bir işlem süresi boyunca tutulur ve ardından havuza döndürülür. Bu, birçok istemcinin küçük bir sunucu bağlantısı havuzunu paylaşmasına olanak tanır.
Bağlantı havuzları
PgBouncer, her veritabanı ve kullanıcı bileşimi için ayrı bir havuz oluşturur. Aynı veritabanına bağlanan iki kullanıcı bağımsız havuzlar alır. Her havuzun boyutu, işlem boyutuna göre değişen Postgres max_connections sınırının yaklaşık 90%'dir.
Havuzdaki tüm bağlantılar kullanımda olduğunda, yeni istemci istekleri kuyrukta bekler. Sunucu bağlantısı 2 dakika içinde kullanılabilir duruma gelmezse istemci bir zaman aşımı hatası alır.
Diyagramda, farklı kullanıcılardan gelen birden çok istemci bağlantısının, sınırlı sayıda gerçek Postgres bağlantısını paylaşan ayrı PgBouncer havuzları (kullanıcı/veritabanı bileşimi başına bir tane) üzerinden nasıl yönlendirildiği gösterilir.
Bağlantı sınırları
Bağlantı havuzunu idare eden üç sınır:
| Sınır | Değer | Neleri denetler? |
|---|---|---|
İstemci bağlantıları (max_client_conn) |
10.000 | Uygulamanızdan PgBouncer'a en fazla bağlantı |
Havuz boyutu (default_pool_size) |
Yaklaşık %90 max_connections |
(kullanıcı, veritabanı) çifti başına etkin sunucu bağlantıları |
Doğrudan bağlantılar (max_connections) |
İşlem boyutuna göre değişir | En fazla doğrudan Postgres bağlantısı |
Doğrudan bağlantı sınırı, işlem boyutunuza bağlıdır. Örneğin, 8 CU işlem 1.678 doğrudan bağlantıyı ve 16 CU işlem 3.357'yi destekler. Tam liste için bkz . İşlem belirtimleri.
10.000 istemci bağlantı sınırı, 10.000 eşzamanlı sorgu sonucu anlamına gelmez. PgBouncer'ın kabul ettiği en fazla istemci bağlantısı sayısını temsil eder. Eşzamanlı etkin işlemlerin sayısı havuz boyutuyla sınırlanır ve bu da yaklaşık olarak 90% olur max_connections.
Bağlantı havuzunu etkinleştirme
Prerequisites
- Lakebase Otomatik Ölçeklendirme projeniz etkin olmalıdır.
- Projede yerel bir Postgres parola rolünüz olmalıdır. Yönergeler için bkz. Yerel Postgres parola rolü oluşturma.
- Bağlantı havuzunu salt okunur işlem örnekleriyle kullanmak için Salt okunur işlem örneklerine erişime izin ver seçeneğinin etkinleştirildiği yüksek kullanılabilirlik uç noktanız olmalıdır. Bkz. Yüksek kullanılabilirlik.
Steps
- Lakebase Uygulamasında projenize gidin ve Bağlan'a tıklayın.
- Bağlanmak istediğiniz şubeyi ve bilgisayarı seçin.
- Rol açılan listesinden yerel bir Postgres parola rolü seçin. Bağlantı havuzu anahtarı yalnızca bir parola rolü seçildiğinde görünür. OAuth rolleri için gizlidir.
- Bağlantı havuzu özelliğini açın.
- bağlantı dizesi kopyalayın ve uygulamanızda kullanın.
Bağlantı dizesi biçimleri
Pooler için kullanılan bağlantı dizeleri, doğrudan veritabanı bağlantılarından farklı bir ana makine adı kullanır. Ana bilgisayar adı, okuma-yazma işlem altyapısı için uç nokta kimliğinden sonra -pooler veya salt okunur işlem altyapısı için -ro-pooler içerir:
| İşlem türü | Ana bilgisayar adı biçimi | Ne zaman kullanılır? |
|---|---|---|
| Okuma-yazma işlemi | <endpoint-id>-pooler.<region>.<cloud>.databricks.com |
Tüm yazma ve okuma trafiği |
| Salt okunur hesaplama | <endpoint-id>-ro-pooler.<region>.<cloud>.databricks.com |
Trafiği yalnızca oku. Okuma erişimi etkinleştirilmiş yüksek kullanılabilirlik uç noktası gerektirir. |
Her ikisi de 5432 numaralı bağlantı noktasını kullanır.
Note
Uç noktanız, bölgeniz ve bulutunuz için doğru ana bilgisayar adını almak amacıyla pooler bağlantı dizesi'ini Lakebase Uygulamasındaki Connect iletişim kutusundan doğrudan kopyalayın.
PgBouncer yapılandırması
Lakebase, PgBouncer'ı aşağıdaki ayarlarla yönetir. Bu ayarlar sabittir ve özelleştirilemez.
[pgbouncer]
pool_mode=transaction
max_client_conn=10000
default_pool_size=0.9 * max_connections
max_prepared_statements=1000
query_wait_timeout=120
| Setting | Description |
|---|---|
pool_mode=transaction |
Sunucu bağlantıları her işlemden sonra havuza geri döner. Bkz. İşlem modu. |
max_client_conn=10000 |
PgBouncer tarafından kabul edilen en fazla eşzamanlı istemci bağlantısı. |
default_pool_size=0.9 * max_connections |
(kullanıcı, veritabanı) çifti başına etkin sunucu bağlantıları. İşlem boyutuna göre değişir. |
max_prepared_statements=1000 |
İşlem modunda protokol düzeyinde hazırlanmış deyimlere izin verir. İstemci bağlantısı başına izlenen ifadeleri 1.000 ile sınırlar. |
query_wait_timeout=120 |
İstemcinin, zaman aşımı hatası almadan önce sunucu bağlantısı için beklediği saniye sayısı. |
İşlem modu
İşlem modu bağlantı verimliliğini artırır ancak kalıcı sunucu bağlantısı gerektiren bazı Postgres özelliklerini kısıtlar. Bağlantı havuzu oluşturucu kullanılırken aşağıdaki özellikler kullanılamaz:
SQL düzeyinde hazırlanmış deyimler:
PREPAREveDEALLOCATEdeyimleri işlem modunda desteklenmez. Sürücü düzeyindeki hazırlanmış ifadeler (psycopg, node-postgres, JDBC ve benzeri kütüphanelerin dahili olarak kullandığı) PgBouncer'ın protokol düzeyindeki desteği sayesinde doğru şekilde çalışır. JDBC için, hazırlanan deyimlerle ilgili hatalar görürseniz, adlandırılmış sunucu tarafı hazırlanmış deyimlerin önbelleğe alınmasını devre dışı bırakmak içinprepareThreshold=0ayarlayın.Oturum düzeyi ayarları:
SETher işlem farklı bir sunucu bağlantısı kullanabileceğinden komutlar işlemler arasında kalıcı olmaz. Örneğin: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 existBir ayarı kalıcı olarak uygulamak için şunu kullanın
ALTER ROLE:ALTER ROLE myrole SET search_path TO myschema, public;Oturumda tutulan geçici tablolar: İşlemler arasında kalıcı olan geçici tablolar kullanılamaz. Havuza döndürülen bir bağlantı, sonraki işlemde farklı bir istemciye atanabilir.
WITH HOLDimleçler: ileWITH HOLDbildirilen imleçler kalıcı bir bağlantı gerektirir ve desteklenmez.Danışmanlık kilitleri: PgBouncer danışmanlık kilitlerini desteklemez. Danışman kilitler, işlem modunda mevcut olmayan kalıcı bir sunucu bağlantısı gerektirir.
LISTEN/NOTIFY: Desteklenmez. Pub/sub mesajlaşması gerektiren uygulamalar için doğrudan bir bağlantı kullanın.pg_dumpve şema geçişleri: Şema geçişleri, oturum düzeyi durumunu kullanan diğer araçlar vepg_dumpiçin doğrudan bağlantı kullanın.
Note
Oturum düzeyinde Postgres özellikleri gerektiren uygulamalar için, Connect iletişim kutusundan, Connection pooling anahtarını etkinleştirmeden doğrudan bir bağlantı dizesi kullanın.