Bağlantı havuzunu kullanın

Important

Lakebase Otomatik Ölçeklendirme, otomatik ölçeklendirme işlemi, sıfıra ölçeklendirme, dallanma ve anında geri yükleme ile Lakebase'in en son sürümüdür. Desteklenen bölgeler için bkz . Bölge kullanılabilirliği. Lakebase Tedarik Edilmiş bir kullanıcıysanız, bkz. Lakebase Tedarik Edilmiş.

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ı bağlantıyı desteklediğinden sunucusuz işlevler, web API'leri ve birçok kısa süreli bağlantı açan diğer uygulamalar için uygun hale gelir.

Bağlantı havuzu, yerel Postgres şifre ile kimlik doğrulamasını gerektirir. OAuth veya Azure Databricks kimlik 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. Web API'leri ve sunucusuz işlevler gibi birçok kısa süreli bağlantı açan uygulamalar, 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. İşlem tamamlandığında, havuz oluşturucu havuza sunucu bağlantısını döndürerek sonraki istemcinin kullanımına sunar.

Lakebase, PgBouncer'ı işlem modunda çalıştırır. İşlem modunda, tek bir işlem süresi boyunca bir sunucu bağlantısı tutulur ve havuza döndürülür. Bu, birçok istemcinin küçük bir sunucu bağlantısı havuzunu paylaşmasına olanak tanır.

İşlem modu bağlantı verimliliğini artırır ancak kalıcı sunucu bağlantısı gerektiren bazı Postgres özelliklerini kısıtlar. Bkz. İşlem modu sınırlamaları.

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 doğrudan bağlantı sınırının yaklaşık% 90'dır.

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.

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.

Bağlantı havuzu, uygulamanızın tek başına doğrudan bağlantı sınırından çok daha fazla eşzamanlı kullanıcıyı desteklemesine olanak tanır.

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.
  • Salt okunur pooler'ı kullanmak için salt okunur işlem örneklerine erişimi etkin durumda olan bir yüksek erişilebilirlik uç noktasına sahip olmalısınız. Bkz. Yüksek kullanılabilirlik.

Bağlantı havuzunu etkinleştirme

  1. Lakebase Uygulamasında projenize gidin ve Bağlan'a tıklayın.
  2. Bağlanmak istediğiniz şubeyi ve bilgisayarı seçin.
  3. 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 ve Azure Databricks kimlik rolleri için gizlenir.
  4. Bağlantı havuzu özelliğini açın.
  5. bağlantı dizesi kopyalayın ve uygulamanızda kullanın.

Yerel Postgres parola rolü için etkinleştirilmiş Bağlantı havuzu geçiş düğmesini gösteren Bağlan iletişim kutusu.

Bağlantı dizesi biçimleri

Havuz bağlantı dizeleri, doğrudan veritabanı bağlantılarından farklı bir ana bilgisayar adı kullanır.

Türü Ana bilgisayar adı biçimi Ne zaman kullanılır?
Okuma-yazma havuzu oluşturucu <endpoint-id>-pooler.<region>.<cloud>.databricks.com Havuza yönlendirilen tüm yazma ve okuma trafiği
Salt okunur havuz oluşturucu <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 iki havuz oluşturucu türü 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.

İşlem modu sınırlamaları

Bağlantı havuzu oluşturucu kullanılırken aşağıdaki Postgres özellikleri kullanılamaz:

  • SQL düzeyinde hazırlanmış deyimler: PREPARE ve DEALLOCATE deyimleri işlem modunda desteklenmez. Sürücü düzeyinde hazırlanmış deyimler (psycopg2, node-postgres, JDBC ve benzeri kitaplıklar tarafından dahili olarak kullanılır), PgBouncer'ın protokol seviyesi 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çin prepareThreshold=0 ayarlayın.

  • Oturum düzeyi ayarları: SET her 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 exist
    

    Bir 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 HOLD imleçler: ile WITH HOLD bildirilen 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_dump ve şema geçişleri: Şema geçişleri, oturum düzeyi durumunu kullanan diğer araçlar ve pg_dump için doğrudan bağlantı kullanın.

Note

Oturum düzeyinde Postgres özelliklerine ihtiyaç duyan uygulamalar için, Connect iletişim kutusundan doğrudan bağlantı dizesini kullanın ve Bağlantı havuzu seçeneğini etkinleştirmeyin.

Sonraki Adımlar

  • Bağlantı dizeleri: Doğrudan bağlantılar için bağlantı dizesi biçimi başvurusu. Bkz. Bağlantı dizeleri.
  • Postgres rolleri oluşturma: Bağlantı havuzu için gereken yerel Postgres parola rolleri oluşturma. Bkz. Postgres rolleri oluşturma.
  • Kimlik doğrulaması hakkında: OAuth ve parola kimlik doğrulama yöntemlerinin karşılaştırması. Bkz. Kimlik doğrulaması hakkında.