Esta página descreve o que é a pool de ligações gerida e como a usar para otimizar a gestão de ligações à base de dados para as suas instâncias do Cloud SQL através da pool.
A funcionalidade de pool de ligações gerida permite-lhe dimensionar as suas cargas de trabalho otimizando a utilização de recursos e a latência de ligação para as suas instâncias do Cloud SQL através da funcionalidade de pool. A funcionalidade Managed Connection Pooling atribui dinamicamente ligações de servidor a pedidos recebidos sempre que possível. Isto oferece melhorias significativas no desempenho, especialmente para associações dimensionadas, ao absorver picos de associação súbitos e reutilizar associações de bases de dados existentes. Em vez de se ligar a uma base de dados específica, a funcionalidade Managed Connection Pooling liga-se a um cluster de poolers, que oferece tempos de ligação mais curtos e escalabilidade para as suas cargas de trabalho.
Cada conjunto está associado a uma base de dados e a um utilizador únicos. Depois de um cliente ser autenticado, o conjunto tenta reutilizar uma das ligações de servidor inativas no conjunto para ligar a base de dados ao servidor. Se não estiver disponível uma ligação ao servidor, cria uma nova ligação ao servidor no conjunto para ligar a base de dados. O número de pools usados baseia-se no número de núcleos de vCPU da sua instância.
Embora possa usar a pool de ligações gerida para quaisquer cargas de trabalho transacionais, esta oferece o maior benefício de débito e latência às aplicações que contêm ligações de curta duração ou aplicações que resultam num aumento repentino de ligações.
Para ligações de longa duração, o desempenho da ligação com a pool de ligações gerida pode ser ligeiramente inferior ao de uma ligação direta. Neste caso, o Managed Connection Pooling oferece o dimensionamento de ligações quando o número de ligações é muito elevado. No entanto, para aplicações que normalmente estabelecem ligações de longa duração, é recomendável evitar a utilização de agrupamento de ligações.
Pode usar a gestão de identidade e de acesso para proteger as ligações, consoante a porta. Para mais informações sobre o funcionamento do IAM no Cloud SQL e as respetivas restrições, consulte a autenticação IAM.
Para mais informações sobre como ativar a funcionalidade Managed Connection Pooling, consulte o artigo Configure a funcionalidade Managed Connection Pooling.
Requisitos
Para usar a funcionalidade de agrupamento de ligações gerido, a sua instância tem de cumprir os seguintes requisitos:
- A sua instância tem de ser uma instância da edição Cloud SQL Enterprise Plus.
- Tem de estar ligado à sua instância apenas através de uma ligação direta ou do proxy Auth do Cloud SQL.
- A sua instância tem de estar configurada para o acesso privado ao serviço, usar um IP público ou ser uma nova instância com o Private Service Connect ativado.
- A sua instância tem de usar a nova arquitetura de rede do Cloud SQL.
- A funcionalidade Managed Connection Pooling requer um número de versão de manutenção mínimo de
POSTGRES_$version.R20250727.00_14
. Para mais informações sobre como fazer a manutenção self-service, consulte o artigo Faça a manutenção self-service.
Portas usadas pela pool de ligações gerida para instâncias do Cloud SQL
Quando ativa a funcionalidade de pool de ligações geridas, as portas usadas pelas instâncias do Cloud SQL para publicar tráfego de bases de dados mudam. Pode usar a gestão de identidade e de acesso para proteger as ligações, consoante a porta.
As portas usadas pela pool de ligações gerida e as respetivas opções de IAM disponíveis são as seguintes:
Porta TCP 5432: usada para ligações diretas pelo servidor da base de dados Postgres. Este é o número da porta predefinido para estabelecer ligação diretamente através do cliente psql.
Porta TCP 6432: usada para ligações diretas pelo servidor de agrupamento de ligações gerido. Para estabelecer ligação através desta porta, especifique
psql -p 6432
quando estabelecer ligação diretamente através do cliente psql.Pode usar qualquer opção de autenticação da IAM quando usar esta porta.
Porta TCP 3307: usada apenas para ligações do proxy Auth do Cloud SQL por um servidor de agrupamento de ligações gerido. Quando usa o proxy Auth do Cloud SQL para se ligar à agrupação de ligações gerida, este número de porta é configurado com o cliente do proxy Auth do Cloud SQL e não pode ser alterado.
Pode usar qualquer opção de autenticação IAM ou autenticação automática da base de dados IAM com esta porta.
Opções de agrupamento
A funcionalidade de pool de ligações gerida permite-lhe gerir a forma como as ligações são agrupadas através do parâmetro pool_mode
. Pode usar as seguintes opções de partilha:
transaction
(predefinição): agrupa as ligações ao nível da transação. As ligações são devolvidas ao conjunto após a conclusão de cada transação. O Cloud SQL recomenda a utilização do modo detransaction
pooling para ligações de curta duração.session
: agrupa as ligações ao nível da sessão. Cada sessão usa uma ligação de servidor dedicada que mantém um estado da sessão. Isto reduz a eficiência da partilha. Quando um cliente se desliga, o servidor regressa ao conjunto de ligações.
Opções de configuração avançadas
Pode personalizar a gestão de pools de ligações usando as seguintes opções de configuração:
Nome da configuração | Descrição |
---|---|
max_pool_size
|
O número máximo de ligações de servidor permitidas a um par de base de dados e utilizador em cada conjunto de ligações. O valor predefinido é de 50 associações. |
min_pool_size
|
O número mínimo de ligações de servidor disponíveis em qualquer altura em
cada conjunto de ligações.
Se o número de ligações ao servidor for inferior a min_pool_size ,
esta definição adiciona mais ligações ao servidor ao conjunto. Isto ajuda a gerir
aumentos súbitos na carga da base de dados após períodos de inatividade e garante
que as ligações estão disponíveis e prontas a usar.
O valor predefinido é 0 associações. |
max_client_connections
|
O número máximo de ligações permitidas para a sua instância quando usa a pool de ligações gerida. O valor predefinido é de 5000 associações. |
max_prepared_statements
|
O número máximo de declarações preparadas com nome ao nível do protocolo suportadas
no modo de agrupamento transaction .
Se definir esta opção como 0, desativa o suporte de declarações preparadas. Para um desempenho ideal, este valor deve exceder o número de comandos preparados usados com frequência na sua base de dados. Um número elevado de declarações preparadas na funcionalidade Managed Connection Pooling pode causar um aumento na utilização de memória. O valor predefinido é 0 declarações. |
client_connection_idle_timeout
|
O tempo que uma ligação de cliente permanece inativa antes de expirar. Este valor pode variar entre 0 e 2 147 483 segundos, e o valor predefinido é 0 segundos. |
server_connection_idle_timeout
|
O tempo que uma ligação de servidor permanece inativa antes de expirar o tempo limite. Este valor pode variar entre 0 e 2 147 483 segundos, e o valor predefinido é 600 segundos. |
query_wait_timeout
|
O tempo que uma consulta aguarda por uma ligação de servidor num conjunto antes de
expirar.
Se esta opção for definida como 0, é desativada, o que permite o enfileiramento indefinido do cliente. A ativação desta opção impede que os servidores que não respondem mantenham as ligações. Este valor pode variar entre 0 e 2 147 483 segundos, e o valor predefinido é de 120 segundos. |
ignore_startup_parameters
|
Os parâmetros que quer ignorar e que não são acompanhados nos pacotes de arranque da gestão de conjuntos de ligações por predefinição. |
server_lifetime
|
O tempo máximo durante o qual uma ligação de servidor fica sem utilização antes de o conjunto de ligações gerido a fechar. Se o valor estiver definido como 0 segundos, a ligação é fechada imediatamente após a utilização.
O valor predefinido é 3600 segundos. |
Limitações
Quando usar o conjunto de ligações gerido com as instâncias da edição Cloud SQL Enterprise Plus, tenha em atenção as seguintes limitações:
- A ativação da pool de ligações gerida numa instância existente resulta no reinício da base de dados.
- Quando usa a API Cloud SQL para ativar, desativar ou configurar
o Managed Connection Pooling, a API
instance.update
não pode conter outras atualizações de configuração da instância. - A funcionalidade de pool de ligações gerida só pode ser usada com a versão 2.15.2 e posterior do proxy Auth do Cloud SQL.
- Se estiver a usar o conector da linguagem Go do Cloud SQL, recomendamos uma versão mínima do Go de
1.24
. Se usar a versão 1.23 ou anterior do Go, pode ter limitações no desempenho quando usar o Managed Connection Pooling. Se estiver a usar o Managed Connection Pooling no
transaction
modo de pooling, as seguintes funcionalidades de SQL não são suportadas:SET/RESET
LISTEN
WITH HOLD CURSOR
PREPARE/DEALLOCATE
PRESERVE/DELETE ROW
tabelas temporáriasLOAD
- Bloqueios consultivos ao nível da sessão
Se estiver a usar a biblioteca de interface da base de dados asyncpg para o pooler de Managed Connection Pooling na porta 3307 e 6432, tem de atualizar o
max_prepared_statements
para um valor superior a 0 para ativar o suporte para declarações preparadas no pooler de Managed Connection Pooling.Se estiver a usar o Cloud SQL para PostgreSQL versão 17, a opção
sslnegotiation=direct
não é suportada.O acompanhamento do IP do cliente não é suportado com a funcionalidade Managed Connection Pooling. Se ativar a opção Armazenar endereços IP dos clientes nas estatísticas de consultas, os endereços IP dos clientes são apresentados como
local
em vez do endereço IP propriamente dito.Se a sua instância estiver a usar o proxy Auth do Cloud SQL e tiver a opção Managed Connection Pooling ativada, a autenticação manual da base de dados do IAM não é suportada. Só pode usar a autenticação IAM automática.
Ligações de servidor usadas pela funcionalidade de pool de ligações geridas
A configuração da base de dados max_connections
limita o número máximo de ligações ao servidor que um agrupador na funcionalidade de agrupamento de ligações gerido pode usar.
O Cloud SQL recomenda ajustar este valor com base nos requisitos da carga de trabalho da sua instância e no tamanho da instância de base de dados. Durante o pico de carga, o número de ligações para autenticação pode tornar-se muito elevado.
Se estiver a usar a predefinição max_pool_size
de 50 conjuntos na sua instância, recomendamos que reserve, pelo menos, 15 ligações de servidor por CPU para a
agrupamento de ligações gerido quando definir a flag max_connections
para a sua base de dados.
Para mais informações acerca da flag max_connections
, consulte o artigo
Máximo de ligações simultâneas.
Para modificar a flag max_connections
para a sua instância,
consulte o artigo Configure flags da base de dados.