Vista geral da gestão de conjuntos de ligações

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:

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 de transactionpooling 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 transactionmodo 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árias
    • LOAD
    • 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.

O que se segue?