Nesta página, descrevemos o que é o pool de conexões gerenciadas e como usá-lo para otimizar o gerenciamento de conexões de banco de dados para suas instâncias do Cloud SQL usando o pool.
O pool de conexões gerenciadas permite escalonar suas cargas de trabalho otimizando o uso de recursos e a latência de conexão para suas instâncias do Cloud SQL usando o pool. O pooling de conexões gerenciado atribui dinamicamente conexões de servidor a solicitações recebidas quando possível. Isso oferece melhorias significativas de desempenho, especialmente para conexões escalonadas, ao absorver picos repentinos de conexão e reutilizar conexões de banco de dados existentes. Em vez de se conectar a um banco de dados específico, o Managed Connection Pooling se conecta a um cluster de poolers, que oferecem tempos de conexão mais curtos e escalonabilidade para suas cargas de trabalho.
Cada pool está associado a um banco de dados e um usuário exclusivos. Depois que um cliente é autenticado, o pool tenta reutilizar uma das conexões de servidor ociosas no pool para conectar o banco de dados ao servidor. Se uma conexão de servidor não estiver disponível, ela vai criar uma nova conexão no pool para conectar o banco de dados. O número de poolers usados se baseia no número de núcleos de vCPU da instância.
Embora seja possível usar o pool de conexões gerenciado para qualquer carga de trabalho transacional, ele oferece o maior benefício de capacidade e latência para aplicativos que contêm conexões de curta duração ou que resultam em um aumento repentino de conexões.
Para conexões de longa duração, o desempenho da conexão usando o pooling de conexões gerenciadas pode ser um pouco menor do que ao usar uma conexão direta. Nesse caso, o pooling de conexões gerenciado oferece escalonamento de conexões quando o número de conexões é muito alto. No entanto, para aplicativos que normalmente estabelecem conexões de longa duração, talvez seja melhor evitar o uso do pool de conexões.
É possível usar o Identity and Access Management para proteger conexões, dependendo da porta. Para mais informações sobre como o IAM funciona no Cloud SQL e as restrições dele, consulte Autenticação do IAM.
Para mais informações sobre como ativar o pool de conexões gerenciadas, consulte Configurar o pool de conexões gerenciadas.
Requisitos
Para usar o pool de conexões gerenciado, sua instância precisa atender aos seguintes requisitos:
- Sua instância precisa ser da edição Cloud SQL Enterprise Plus.
- Você precisa se conectar à instância usando apenas uma conexão direta ou o proxy do Cloud SQL Auth.
- A instância precisa ser configurada para acesso a serviços privados, usar IP público ou ser uma nova instância com o Private Service Connect ativado.
- Sua instância precisa usar a nova arquitetura de rede do Cloud SQL.
- O pooling de conexões gerenciado requer um número de versão de manutenção mínima de
POSTGRES_$version.R20250727.00_14
. Para mais informações sobre como fazer a manutenção de autoatendimento, consulte Fazer a manutenção de autoatendimento.
Portas usadas pelo pool de conexões gerenciadas para instâncias do Cloud SQL
Quando você ativa o pool de conexões gerenciado, as portas usadas pelas instâncias do Cloud SQL para veicular o tráfego do banco de dados mudam. É possível usar o Identity and Access Management para proteger conexões, dependendo da porta.
Confira abaixo as portas usadas pelo pool de conexões gerenciado e as opções de IAM disponíveis:
Porta TCP 5432: usada para conexões diretas pelo servidor de banco de dados Postgres. Esse é o número da porta padrão para conexão direta usando o cliente psql.
Porta TCP 6432: usada para conexões diretas pelo servidor de pool de conexões gerenciadas. Para se conectar usando essa porta, especifique
psql -p 6432
ao se conectar diretamente usando o cliente psql.É possível usar qualquer opção de autenticação do IAM ao usar essa porta.
Porta TCP 3307: usada apenas para conexões do proxy de autenticação do Cloud SQL por um servidor de pool de conexões gerenciadas. Quando você usa o proxy de autenticação do Cloud SQL para se conectar ao Managed Connection Pooling, esse número de porta é configurado com o cliente do proxy de autenticação do Cloud SQL e não pode ser alterado.
É possível usar qualquer opção de autenticação do IAM ou a autenticação automática do banco de dados do IAM com essa porta.
Opções de pooling
Com o pooling de conexões gerenciado, é possível controlar como as conexões são agrupadas usando o parâmetro pool_mode
. Você pode usar as seguintes opções de agrupamento:
transaction
(padrão): agrupa conexões no nível da transação. As conexões são retornadas ao pool após a conclusão de cada transação. O Cloud SQL recomenda o uso do modo de pooltransaction
para conexões de curta duração.session
: agrupa conexões no nível da sessão. Cada sessão usa uma conexão de servidor dedicada que mantém um estado de sessão. Isso reduz a eficiência do agrupamento. Quando um cliente se desconecta, o servidor retorna ao pool de conexões.
Opções de configuração avançada
Você pode personalizar o pool de conexões gerenciadas usando as seguintes opções de configuração:
Nome da configuração | Descrição |
---|---|
max_pool_size
|
O número máximo de conexões de servidor permitidas para um par de banco de dados e usuário em cada pool de conexões. O valor padrão é 50 conexões. |
min_pool_size
|
O número mínimo de conexões de servidor disponíveis a qualquer momento em cada pool de conexões.
Se o número de conexões de servidor for menor que min_pool_size ,
essa configuração adiciona mais conexões de servidor ao pool. Isso ajuda a gerenciar aumentos repentinos na carga do banco de dados após períodos de inatividade e garante que as conexões estejam disponíveis e prontas para uso.
O valor padrão é 0 conexões. |
max_client_connections
|
O número máximo de conexões permitidas para sua instância ao usar o pool de conexões gerenciado. O valor padrão é de 5.000 conexões. |
max_prepared_statements
|
O número máximo de instruções preparadas nomeadas no nível do protocolo compatíveis
no modo de pool transaction .
Definir essa opção como 0 desativa o suporte a instruções preparadas. Para um desempenho ideal, esse valor precisa exceder o número de comandos preparados usados com frequência no banco de dados. Um grande número de instruções preparadas no pool de conexões gerenciadas pode causar um aumento no uso da memória. O valor padrão é 0 declarações. |
client_connection_idle_timeout
|
O tempo que uma conexão de cliente permanece inativa antes de atingir o tempo limite. Esse valor pode variar de 0 a 2.147.483 segundos, e o valor padrão é 0 segundo. |
server_connection_idle_timeout
|
O tempo que uma conexão de servidor permanece inativa antes de atingir o tempo limite. Esse valor pode variar de 0 a 2.147.483 segundos, e o valor padrão é de 600 segundos. |
query_wait_timeout
|
O tempo que uma consulta aguarda uma conexão de servidor em um pool antes de atingir o tempo limite.
Definir essa opção como 0 a desativa, o que permite o enfileiramento indefinido de clientes. Ativar essa opção impede que servidores sem resposta mantenham conexões. Esse valor pode variar de 0 a 2.147.483 segundos, e o valor padrão é de 120 segundos. |
ignore_startup_parameters
|
Os parâmetros que você quer ignorar e que não são rastreados nos pacotes de inicialização do pool de conexões gerenciadas por padrão. |
server_lifetime
|
O tempo máximo que uma conexão de servidor fica sem uso antes de ser fechada pelo pool de conexões gerenciado. Se o valor for definido como 0 segundos, a conexão será fechada imediatamente após o uso.
O valor padrão é de 3.600 segundos. |
Limitações
Ao usar o pool de conexões gerenciadas com suas instâncias do Cloud SQL Enterprise Plus, considere estas limitações:
- Ativar o pool de conexões gerenciado em uma instância atual resulta em uma reinicialização do banco de dados.
- Quando você usa a API Cloud SQL para ativar, desativar ou configurar
o pool de conexões gerenciadas, a API
instance.update
não pode conter outras atualizações de configuração de instância. - O pool de conexões gerenciado só pode ser usado com o proxy de autenticação do Cloud SQL versão 2.15.2 e mais recentes.
- Se você estiver usando o conector de linguagem Go do Cloud SQL, recomendamos
uma versão mínima do Go de
1.24
. Se você usa o Go versão 1.23 ou anterior, pode haver limitações de performance ao usar o pool de conexões gerenciadas. Se você estiver usando o pool de conexões gerenciadas no modo de pool
transaction
, os seguintes recursos do SQL não serão compatíveis:SET/RESET
LISTEN
WITH HOLD CURSOR
PREPARE/DEALLOCATE
PRESERVE/DELETE ROW
tabelas temporáriasLOAD
- Bloqueios consultivos no nível da sessão
Se você estiver usando a biblioteca de interface de banco de dados asyncpg para o pooler de pool de conexões gerenciadas nas portas 3307 e 6432, atualize o
max_prepared_statements
para um valor maior que 0 e ative o suporte a instruções preparadas no pooler de pool de conexões gerenciadas.Se você estiver usando o Cloud SQL para PostgreSQL versão 17, a opção
sslnegotiation=direct
não será compatível.O rastreamento de IP do cliente não é compatível com o pool de conexões gerenciadas. Se você ativar a opção Armazenar endereços IP do cliente em Insights de consultas, os endereços IP do cliente vão aparecer como
local
em vez do endereço IP em si.Se a instância estiver usando o proxy de autenticação do Cloud SQL e tiver o pool de conexões gerenciadas ativado, a autenticação manual do banco de dados do IAM não será compatível. Só é possível usar a autenticação automática do IAM.
Conexões de servidor usadas pelo pooling de conexões gerenciado
A configuração do banco de dados max_connections
limita o número máximo de
conexões de servidor que um pooler no Managed Connection Pooling pode usar.
O Cloud SQL recomenda ajustar esse valor com base nos requisitos de
carga de trabalho da instância e no tamanho da instância de banco de dados. Durante o pico de carga, o número de conexões para autenticação pode ficar muito alto.
Se você estiver usando o max_pool_size
padrão de 50 pools na sua instância, recomendamos reservar pelo menos 15 conexões de servidor por CPU para o pool de conexões gerenciado ao definir a flag max_connections
para seu banco de dados.
Para mais informações sobre a flag max_connections
, consulte
Máximo de conexões simultâneas.
Para modificar a flag max_connections
da sua instância, consulte Configurar flags do banco de dados.