Utilize o agrupamento de conexões.
Lakebase autoscale é a versão mais recente do Lakebase, com recursos como autoscale compute, escala-to-zero, branching e instant restore. Para regiões compatíveis, consulte Disponibilidade por região. Se você é usuário de provisionamento Lakebase , consulte ProvisionamentoLakebase.
Lakebase inclui um gerenciador de conexões PgBouncer integrado que mantém um pool de conexões de servidor e as compartilha entre várias conexões de clientes. O pool de conexões suporta até 10.000 conexões simultâneas, sendo uma boa opção para funções serverless , APIs da web e outras aplicações que abrem muitas conexões de curta duração.
O agrupamento de conexões requer autenticação nativa por senha do Postgres. Não está disponível para funções de identidade OAuth ou Databricks.
Como funciona o agrupamento de conexões
Cada conexão Postgres consome recursos do servidor porque o Postgres cria um processo separado para cada cliente. Aplicações que abrem muitas conexões de curta duração, como APIs da web e funções serverless , podem esgotar rapidamente o limite de conexões do servidor.
O gerenciador de conexões fica entre sua aplicação e o Postgres. Os clientes se conectam ao pooler, e o pooler encaminha as consultas para um pool menor de conexões reais do servidor. Quando uma transação é concluída, o gerenciador de pools devolve a conexão do servidor ao pool, tornando-a disponível para o próximo cliente.
Execução Lakebase PgBouncer em modo de transação. No modo de transação, uma conexão com o servidor é mantida durante a duração de uma única transação e, em seguida, devolvida ao pool. Isso permite que muitos clientes compartilhem um pequeno pool de conexões de servidor.
O modo de transação melhora a eficiência da conexão, mas restringe certos recursos do Postgres que exigem uma conexão persistente com o servidor. Consulte Limitações do modo de transação.
Piscina de conexões
O PgBouncer cria um pool separado para cada combinação de banco de dados e usuário. Dois usuários que se conectam ao mesmo banco de dados obtêm pools independentes. O tamanho de cada pool corresponde a aproximadamente 90% do limite de conexões diretas do sistema de compute.
Quando todas as conexões em um pool estão em uso, as novas solicitações do cliente ficam aguardando em uma fila. Se uma conexão com o servidor não estiver disponível em 2 minutos, o cliente recebe um erro de tempo limite excedido.
Limites de conexão
Três limites regem o agrupamento de conexões:
Limite | Valor | O que ele controla |
|---|---|---|
Conexões de clientes ( | 10.000 | Conexões máximas do seu aplicativo para o PgBouncer |
tamanho da piscina ( | ~90% de | Conexões de servidor ativas por par (usuário, banco de dados) |
Conexões diretas ( | Varia de acordo com o tamanho compute . | Número máximo de conexões diretas com o Postgres |
O limite de conexões diretas depende da capacidade compute da sua empresa. Por exemplo, um compute 8 CUs suporta 1.678 conexões diretas e um compute 16 CUs suporta 3.357. Para a lista completa, consulte as especificações de computação.
O agrupamento de conexões permite que seu aplicativo suporte muito mais usuários simultâneos do que o limite de conexões diretas permitiria.
Pré-requisitos
- Seu projeto de autoescalonamento Lakebase precisa estar ativo.
- Você precisa ter uma função nativa de senha do Postgres no projeto. Para obter instruções, consulte Criar uma função de senha nativa do Postgres.
- Para usar o pooler somente leitura, você precisa ter um endpoint de alta disponibilidade com a opção "Permitir acesso a instâncias compute somente leitura" habilitada. Veja Alta disponibilidade.
Ativar o agrupamento de conexões
- No aplicativo Lakebase, acesse seu projeto e clique em Conectar .
- Selecione a filial e compute aos quais deseja se conectar.
- Na lista suspensa "Função" , selecione uma função de senha nativa do Postgres. A opção de ativação/desativação do agrupamento de conexões só fica visível quando uma função de senha é selecionada. Está oculto para funções de identidade OAuth e Databricks.
- Ative o agrupamento de conexões .
- Copie as strings de conexão e utilize-as em sua aplicação.

Formatos de cadeias de conexão
strings de conexão do Pooler usam um hostname diferente das conexões diretas com o banco de dados:
Tipo | formato de nome de host | Quando usar |
|---|---|---|
pooler de leitura e gravação |
| Todo o tráfego de leitura e escrita é roteado através do pooler. |
pooler somente leitura |
| Somente leitura de tráfego. Requer um endpoint de alta disponibilidade com acesso de leitura habilitado. |
Ambos os tipos de pooler usam a porta 5432.
Copie as strings de conexão do pooler diretamente da caixa de diálogo Conectar no aplicativo Lakebase para obter o hostname correto para seu endpoint, região e cloud.
Limitações do modo de transação
Os seguintes recursos do Postgres não estão disponíveis ao usar o pool de conexões:
-
Instruções preparadas em nível SQL : as instruções
PREPAREeDEALLOCATEnão são suportadas no modo de transação. As instruções preparadas em nível de driver (usadas internamente pelo psycopg2, node-postgres, JDBC e bibliotecas similares) funcionam corretamente graças ao suporte em nível de protocolo do PgBouncer. Para JDBC, se você vir erros relacionados a instruções preparadas, definaprepareThreshold=0para desativar o cache de instruções preparadas nomeadas do lado do servidor. -
Configurações de nível de sessão : o comando
SETnão persiste entre transações porque cada transação pode usar uma conexão de servidor diferente. Por exemplo:SQLBEGIN;
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 existPara aplicar uma configuração permanentemente, use
ALTER ROLEem vez disso:SQLALTER ROLE myrole SET search_path TO myschema, public; -
Tabelas temporárias mantidas durante a sessão : Tabelas temporárias que persistem entre transações não estão disponíveis. Uma conexão devolvida ao pool pode ser atribuída a um cliente diferente na próxima transação.
-
Cursores
WITH HOLD: Cursores declarados comWITH HOLDrequerem uma conexão persistente e não são suportados. -
Bloqueios consultivos : O PgBouncer não suporta bloqueios consultivos. Os bloqueios consultivos exigem uma conexão persistente com o servidor, o que não está disponível no modo de transação.
-
LISTEN/NOTIFY: Não suportado. Utilize uma conexão direta (não em pool) para aplicações que requerem mensagens de publicação/assinatura. -
pg_dumpe migrações de esquema : Use uma conexão direta parapg_dump, migrações de esquema e outras ferramentas que dependem do estado em nível de sessão.
Para aplicações que requerem recursos do Postgres em nível de sessão, utilize strings de conexão diretas a partir da caixa de diálogo Conectar , sem habilitar a opção de pool de conexões .
Próximos passos
- stringsde conexão : Referência de formato de cadeias de conexão para conexões diretas. Consulte stringsde conexão.
- Criar funções do Postgres : Como criar funções nativas de senha do Postgres necessárias para o agrupamento de conexões. Consulte Criar funções do Postgres.
- Sobre autenticação : Comparação dos métodos de autenticação OAuth e por senha. Consulte Sobre autenticação.