Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Important
Lakebase Autoscaling är den senaste versionen av Lakebase, med automatisk skalningsberäkning, skalning till noll, förgrening och omedelbar återställning. Information om regioner som stöds finns i Regiontillgänglighet. Om du är en Lakebase Provisioned-användare kan du läsa Lakebase Provisioned.
Lakebase innehåller en inbyggd PgBouncer-anslutningspool som underhåller en pool med serveranslutningar och delar dem över många klientanslutningar. Pooler stöder upp till 10 000 samtidiga anslutningar, vilket gör det lämpligt för serverlösa funktioner, webb-API:er och andra program som öppnar många kortvariga anslutningar.
Anslutningspooler kräver intern Postgres-lösenordsautentisering. Den är inte tillgänglig för OAuth- eller Azure Databricks identitetsroller.
Så här fungerar anslutningspooler
Varje Postgres-anslutning förbrukar serverresurser eftersom Postgres skapar en separat process för varje klient. Program som öppnar många kortvariga anslutningar, till exempel webb-API:er och serverlösa funktioner, kan snabbt uttömma serverns anslutningsgräns.
Anslutningspoolen finns mellan ditt program och Postgres. Klienter ansluter till poolverktyget och poolverktyget vidarebefordrar frågor till en mindre pool med faktiska serveranslutningar. När en transaktion är klar returnerar poolhanteraren serveranslutningen till poolen, vilket gör den tillgänglig för nästa klient.
Lakebase kör PgBouncer i transaktionsläge. I transaktionsläge hålls en serveranslutning under en enskild transaktions varaktighet och returneras sedan till poolen. På så sätt kan många klienter dela en liten pool med serveranslutningar.
Transaktionsläget förbättrar anslutningseffektiviteten men begränsar vissa Postgres-funktioner som kräver en beständig serveranslutning. Se Begränsningar för transaktionsläge.
Anslutningspooler
PgBouncer skapar en separat pool för varje databas och användarkombination. Två användare som ansluter till samma databas får oberoende pooler. Storleken på varje pool är cirka 90% av beräkningsgränsen för direktanslutning.
När alla anslutningar i en pool används väntar nya klientbegäranden i en kö. Om en serveranslutning inte blir tillgänglig inom 2 minuter får klienten ett timeout-fel.
Anslutningsgränser
Tre gränser styr anslutningspooler:
| Gräns | Value | Vad den styr |
|---|---|---|
Klientanslutningar (max_client_conn) |
10 000 | Maximalt antal anslutningar från ditt program till PgBouncer |
Poolstorlek (default_pool_size) |
~90% av max_connections |
Aktiva serveranslutningar per par (användare, databas) |
Direktanslutningar (max_connections) |
Varierar beroende på beräkningsstorlek | Maximalt antal direkta Postgres-anslutningar |
Gränsen för direktanslutning beror på beräkningsstorleken. En 8 CU-beräkning stöder till exempel 1 678 direkta anslutningar och en 16 CU-beräkning stöder 3 357. Den fullständiga listan finns i Beräkningsspecifikationer.
Med anslutningspooler kan ditt program stödja mycket fler samtidiga användare än vad enbart direktanslutningsgränsen skulle tillåta.
Förutsättningar
- Ditt Lakebase Autoscaling-projekt måste vara aktivt.
- Du måste ha en intern Postgres-lösenordsroll i projektet. Anvisningar finns i Skapa en intern Postgres-lösenordsroll.
- Om du vill använda den skrivskyddade poolen måste du ha en slutpunkt med hög tillgänglighet med alternativet Tillåt åtkomst till skrivskyddade beräkningsinstanser aktiverat. Se Hög tillgänglighet.
Aktivera anslutningspooler
- I Lakebase-appen går du till projektet och klickar på Anslut.
- Välj den gren och beräkning som du vill ansluta till.
- I listrutan Roll väljer du en intern Postgres-lösenordsroll. Växlingsknappen för anslutningspoolning visas bara när en lösenordsroll har valts. Den är dold för OAuth- och Azure Databricks identitetsroller.
- Aktivera anslutningspooler.
- Kopiera reťazec pripojenia och använd den i ditt program.
Format för anslutningssträngar
Anslutningssträngar för pooler använder ett annat värdnamn än direkta databasanslutningar:
| Type | Värdnamnsformat | När man ska använda |
|---|---|---|
| Läs- och skrivcache | <endpoint-id>-pooler.<region>.<cloud>.databricks.com |
All skriv- och lästrafik som dirigeras genom poolern |
| Skrivskyddad pooler | <endpoint-id>-ro-pooler.<region>.<cloud>.databricks.com |
Endast lästrafik Kräver en slutpunkt för hög tillgänglighet med läsåtkomst aktiverat. |
Båda pooltyperna använder port 5432.
Note
Kopiera din pooler reťazec pripojenia direkt från dialogrutan Connect i Lakebase App för att få rätt värdnamn för slutpunkten, regionen och molnet.
Begränsningar i transaktionsläge
Följande Postgres-funktioner är inte tillgängliga när du använder anslutningspoolen:
Förberedda instruktioner på SQL-nivå:
PREPAREochDEALLOCATE-instruktioner stöds inte i transaktionsläge. Förberedda instruktioner på drivrutinsnivå (används internt av psycopg2, node-postgres, JDBC och liknande bibliotek) fungerar korrekt via PgBouncer-stöd på protokollnivå. För JDBC, om du ser fel som rör förberedda instruktioner, anger duprepareThreshold=0för att inaktivera namngiven cachelagring av förberedda instruktioner på serversidan.Inställningar på sessionsnivå:
SETKommandon bevaras inte mellan transaktioner eftersom varje transaktion kan använda en annan serveranslutning. Som exempel: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 existOm du vill tillämpa en inställning permanent använder du
ALTER ROLEi stället:ALTER ROLE myrole SET search_path TO myschema, public;Sessionsbaserade temporära tabeller: Temporära tabeller som bevaras mellan transaktioner är inte tillgängliga. En anslutning som returneras till poolen kan tilldelas till en annan klient i nästa transaktion.
WITH HOLDmarkörer: Markörer som deklareras medWITH HOLDkräver en beständig anslutning och stöds inte.Rådgivande lås: PgBouncer stöder inte rådgivningslås. Rådgivande lås kräver en beständig serveranslutning som inte är tillgänglig i transaktionsläge.
LISTEN/NOTIFY: Stöds inte. Använd en direktanslutning (icke-poolad) för program som kräver pub-/undermeddelanden.pg_dumpoch schemamigreringar: Använd en direktanslutning förpg_dump, schemamigreringar och andra verktyg som förlitar sig på sessionsnivåtillstånd.
Note
För program som kräver Postgres-funktioner på sessionsnivå använder du en direkt reťazec pripojenia från dialogrutan Connect utan att aktivera dialogrutan Anslutningspool.
Nästa steg
- Anslutningssträngar: Referens för anslutningssträngformat för direktanslutningar. Se Anslutningssträngar.
- Skapa Postgres-roller: Så här skapar du inbyggda Postgres-lösenordsroller som krävs för anslutningspooler. Se avsnittet Skapa Postgres-roller.
- Om autentisering: Jämförelse av OAuth- och lösenordsautentiseringsmetoder. Se Om autentisering.