Questa pagina descrive cos'è il pooling di connessioni gestito e come utilizzarlo per ottimizzare
la gestione delle connessioni al database per le tue istanze Cloud SQL utilizzando il pooling.
Il pooling delle connessioni gestito consente di scalare i carichi di lavoro ottimizzando l'utilizzo delle risorse
e la latenza di connessione per le istanze Cloud SQL utilizzando il pooling.
Il pool di connessioni gestito assegna dinamicamente le connessioni server alle
richieste in entrata, se possibile. Ciò comporta miglioramenti significativi delle prestazioni, soprattutto per le connessioni scalate, assorbendo i picchi improvvisi di connessione e riutilizzando le connessioni al database esistenti. Anziché connettersi a un database specifico, il pool di connessioni gestito si connette a un cluster di pooler, che forniscono tempi di connessione più brevi e scalabilità per i tuoi workload. Il numero di pooler utilizzati si basa sul numero di core vCPU
della tua istanza.
Sebbene tu possa utilizzare il pooling di connessioni gestito per qualsiasi carico di lavoro transazionale,
il pooling di connessioni gestito offre il massimo vantaggio in termini di velocità effettiva e latenza con le applicazioni
che contengono connessioni di breve durata o che comportano un
aumento improvviso delle connessioni.
Per le connessioni di lunga durata, le prestazioni della connessione utilizzando
il pool di connessioni gestito possono essere leggermente inferiori rispetto a quelle di una connessione
diretta. In questo caso, il pool di connessioni gestito fornisce lo scaling
delle connessioni quando il numero di connessioni è molto elevato. Tuttavia, per le applicazioni che in genere stabiliscono connessioni di lunga durata, potresti utilizzare connessioni dirette alla tua istanza.
Per utilizzare il pool di connessioni gestito, la tua istanza deve soddisfare i seguenti requisiti:
L'istanza deve essere un'istanza Cloud SQL Enterprise Plus.
Devi essere connesso all'istanza utilizzando una connessione diretta o
solo il proxy di autenticazione Cloud SQL.
Devi essere connesso all'istanza utilizzando un nome utente e una password validi. Gli utenti IAM e IAM
group non sono supportati quando si utilizza il pool di connessioni gestito.
Il pool di connessioni gestito richiede un numero di versione di manutenzione
minimo di POSTGRES_$version.R20250302.00_04. Per ulteriori
informazioni, consulta
Eseguire la manutenzione self-service.
Porte utilizzate dal pooling di connessioni gestito per le istanze Cloud SQL
Quando abiliti il pool di connessioni gestito, le porte utilizzate dalle istanze Cloud SQL per gestire il traffico del database cambiano. Le porte utilizzate dal pool di connessioni gestito sono le seguenti:
Porta TCP 5432: utilizzata per le connessioni dirette dal server di database Postgres. Questo è il numero di porta predefinito utilizzato per la connessione diretta tramite il client psql.
Porta TCP 6432: utilizzata per le connessioni dirette dal pooler del pool di connessioni gestito. Per connetterti utilizzando questa porta, specifica psql -p 6432 quando ti connetti direttamente utilizzando il client psql.
Porta TCP 3307: utilizzata per le connessioni solo del proxy di autenticazione Cloud SQL da un pooler di Managed Connection Pooling. Quando utilizzi il proxy di autenticazione Cloud SQL per connetterti al pooler di Managed Connection Pooling, questo numero di porta viene configurato con il client proxy di autenticazione Cloud SQL e non può essere modificato.
Opzioni di configurazione avanzate
Il pool di connessioni gestito offre le seguenti opzioni di pooling che puoi impostare
utilizzando il parametro pool_mode:
transaction (impostazione predefinita): raggruppa le connessioni a livello di transazione.
session: raggruppa le connessioni a livello di sessione.
max_pool_size: la dimensione massima del pool di connessioni. Il valore predefinito è 50 connessioni.
min_pool_size: la dimensione soglia del pool di connessioni. Se il numero
di connessioni server è inferiore a min_pool_size, aggiungi altre connessioni
server al pool. Il valore predefinito è 0 connessioni.
max_client_connections: il numero massimo di connessioni consentite
per l'istanza. Il valore predefinito è 5000 connessioni.
client_connection_idle_timeout: il tempo in cui una connessione client
rimane inattiva prima del timeout. Questo valore può variare da 0 a 2.147.483
secondi e il valore predefinito è 0 secondi.
server_connection_idle_timeout: il tempo in cui una connessione al server
rimane inattiva prima del timeout. Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 600 secondi.
query_wait_timeout: il tempo di attesa di una query prima che scada il timeout.
Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 120 secondi.
max_prepared_statements: il numero massimo di comandi di istruzioni preparate denominate a livello di protocollo supportati nella modalità di raggruppamento delle transazioni. Il valore predefinito è 0 istruzioni.
ignore_startup_parameters: i parametri che vuoi ignorare e che
non vengono monitorati nei pacchetti di avvio di Managed Connection Pooling per impostazione predefinita.
server_lifetime: il tempo massimo in cui una connessione server non viene utilizzata
prima che il pool di connessioni gestito la chiuda. Il valore predefinito è 3600 secondi.
Limitazioni
Quando utilizzi il pool di connessioni gestito con le istanze Cloud SQL Enterprise Plus, tieni presente
queste limitazioni:
L'attivazione del pool di connessioni gestito su un'istanza esistente comporta
il riavvio del database.
Quando utilizzi l'API Cloud SQL per abilitare, disabilitare o configurare
il pool di connessioni gestito, l'API instance.update non può contenere altri
aggiornamenti della configurazione dell'istanza.
Il pooling di connessioni gestito può essere utilizzato solo con il proxy di autenticazione Cloud SQL versione 2.15.2 e successive.
Se utilizzi il connettore del linguaggio Go di Cloud SQL, ti consigliamo
una versione minima di Go 1.24. Se utilizzi Go versione 1.23 o precedenti, potresti riscontrare limitazioni delle prestazioni quando utilizzi il pool di connessioni gestito.
Se utilizzi il pool di connessioni gestito in modalità di pooling transaction, le seguenti funzionalità SQL non sono supportate:
SET/RESET
LISTEN
WITH HOLD CURSOR
PREPARE/DEALLOCATE
PRESERVE/DELETE ROW tabelle temporanee
LOAD
Blocchi di avviso a livello di sessione
Se utilizzi la
libreria di interfacce di database asyncpg
per il pooler di Managed Connection Pooling sulle porte 3307 e 6432, devi aggiornare
max_prepared_statements a un valore maggiore di 0 per attivare il supporto delle
istruzioni preparate nel pooler di Managed Connection Pooling.
Se utilizzi Cloud SQL per PostgreSQL versione 17, l'opzione
sslnegotiation=direct non è supportata.
Il monitoraggio dell'IP client non è supportato con il pool di connessioni gestito. Se abiliti
Archivia gli indirizzi IP client in Approfondimenti sulle query,
gli indirizzi IP client vengono visualizzati come local anziché l'indirizzo IP
stesso.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[],[],null,["# Managed Connection Pooling overview\n\n\u003cbr /\u003e\n\n[MySQL](/sql/docs/mysql/managed-connection-pooling \"View this page for the MySQL database engine\") \\| PostgreSQL \\| SQL Server\n\n\u003cbr /\u003e\n\n|\n| **Preview\n| --- [Managed Connection Pooling](/sql/docs/postgres/managed-connection-pooling)**\n|\n|\n| This feature is subject to the \"Pre-GA Offerings Terms\" in the General Service Terms section\n| of the [Service Specific Terms](/terms/service-terms#1).\n|\n| You can process personal data for this feature as outlined in the\n| [Cloud Data Processing\n| Addendum](/terms/data-processing-addendum), subject to the obligations and restrictions described in the agreement under\n| which you access Google Cloud.\n|\n| Pre-GA features are available \"as is\" and might have limited support.\n|\n| For more information, see the\n| [launch stage descriptions](/products#product-launch-stages).\n\nThis page describes what Managed Connection Pooling is and how to use it with your\nCloud SQL instances.\n\nManaged Connection Pooling lets you scale your workloads by optimizing resource utilization\nand connection latency for your Cloud SQL for PostgreSQL instances using pooling.\n\nManaged Connection Pooling dynamically assigns server connections to\nincoming requests when possible. This delivers significant performance\nimprovements, especially for scaled connections, by absorbing sudden\nconnection spikes and reusing existing database connections. Instead of\nconnecting to a particular database, Managed Connection Pooling connects to a\ncluster of poolers, which provide shorter connection times and scalability\nfor your workloads. The number of poolers used is based on the number of vCPU\ncores of your instance.\n\n\nWhile you can use Managed Connection Pooling for any transactional workloads,\nManaged Connection Pooling provides the most throughput and latency benefit with applications\nthat contain short-lived connections, or applications that result in a\nconnection surge.\n\nFor long-lived connections, the connection performance using\nManaged Connection Pooling can be slightly lower than when using a direct\nconnection. In this case, Managed Connection Pooling provides connection\nscaling when the number of connections is very high. However, for\napplications that typically establish long-lived connections, you might use\ndirect connections to your instance instead.\n\nFor more information on how to enable Managed Connection Pooling, see\n[Configure Managed Connection Pooling](/sql/docs/postgres/configure-mcp).\n\nRequirements\n------------\n\nTo use Managed Connection Pooling, your instance must meet the following requirements:\n\n- Your instance must be a Cloud SQL Enterprise Plus edition instance.\n- You must be connected to your instance using a direct connection, or the Cloud SQL Auth Proxy only.\n- You must be connected to your instance using a valid username and password. IAM and IAM group users aren't supported when using Managed Connection Pooling.\n- Your instance must either be set up for [private service access](/sql/docs/postgres/private-ip#set_up_private_services_access_for_your_network), use public IP, or be a new instance with [Private Service Connect](/sql/docs/postgres/about-private-service-connect) enabled.\n- Your instance must use the new [Cloud SQL network architecture](/sql/docs/postgres/upgrade-cloud-sql-instance-new-network-architecture).\n- Managed Connection Pooling requires a minimum maintenance version number of `POSTGRES_$version.R20250302.00_04`. For more information, see [Perform self-service maintenance](/sql/docs/postgres/self-service-maintenance).\n\nPorts used by Managed Connection Pooling for Cloud SQL instances\n----------------------------------------------------------------\n\nWhen you enable Managed Connection Pooling, the ports used by Cloud SQL instances to serve database traffic change. The ports used by Managed Connection Pooling are as follows:\n\n- **TCP port 5432** : used for direct connections by the Postgres database server. This is the default port number used when [directly connecting using psql client](/sql/docs/postgres/connect-admin-ip#connect).\n- **TCP port 6432** : used for direct connections by the Managed Connection Pooling pooler. To connect using this port, specify `psql -p 6432` when [directly connecting using psql client](/sql/docs/postgres/connect-admin-ip#connect).\n- **TCP port 3307**: used for the Cloud SQL Auth Proxy only connections by a Managed Connection Pooling pooler. When you use Cloud SQL Auth Proxy to connect to Managed Connection Pooling pooler, this port number is configured with the Cloud SQL Auth Proxy client and can't be changed.\n\nAvailable configuration options\n-------------------------------\n\nManaged Connection Pooling offers the following pooling options that you can set using the `pool_mode` parameter:\n\n\u003cbr /\u003e\n\n- `transaction` (default): pools connections at a transaction level.\n- `session`: pools connections at a session level.\n\n| **Note:** The maximum number of server connections used by the pooler in Managed Connection Pooling is limited by the `max_connections` database configuration. Cloud SQL recommends adjusting this value based on your instance's workload requirements and the database instance size. For more information about the `max_connections` flag, see [Maximum concurrent connections](/sql/docs/quotas#maximum_concurrent_connections). To modify the `max_connections` database configuration flag for your instance, see [Configure database flags](/sql/docs/postgres/flags#config).\n\nYou can also\n[customize Managed Connection Pooling](/sql/docs/postgres/configure-mcp#modify-mcp)\nby using the following configuration parameters:\n\n- `max_pool_size`: the maximum size of the connection pool. The default value is 50 connections.\n- `min_pool_size`: the threshold size of the connection pool. If the number of server connections is less than `min_pool_size`, then add more server connections to the pool. The default value is 0 connections.\n- `max_client_connections`: the maximum number of connections allowed for your instance. The default value is 5,000 connections.\n- `client_connection_idle_timeout`: the time that a client-connection remains idle before it times out. This value can range from 0 to 2,147,483 seconds, and the default value is 0 seconds.\n- `server_connection_idle_timeout`: the time that a server connection remains idle before it times out. This value can range from 0 to 2,147,483 seconds, and the default value is 600 seconds.\n- `query_wait_timeout`: the time that a query waits until it times out. This value can range from 0 to 2,147,483 seconds, and the default value is 120 seconds.\n- `max_prepared_statements`: the maximum number of protocol-level named prepared statements commands supported in transaction pooling mode. The default value is 0 statements.\n- `ignore_startup_parameters`: the parameters you want ignored, that aren't tracked in Managed Connection Pooling's startup packets by default.\n- `server_lifetime`: the maximum time a server connection is unused before Managed Connection Pooling closes it. The default value is 3600 seconds.\n\nLimitations\n-----------\n\nConsider the following limitations when using Managed Connection Pooling with\nyour Cloud SQL Enterprise Plus edition instances:\n\n- Enabling Managed Connection Pooling on an existing instance results in a database restart.\n- When you use the Cloud SQL API to enable, disable, or configure Managed Connection Pooling, the `instance.update` API can't contain any other instance configuration updates.\n- Managed Connection Pooling can only be used with Cloud SQL Auth Proxy version 2.15.2 and later.\n- If you're using the Cloud SQL Go Language Connector, then we recommend a minimum Go version of `1.24`. If you use Go version 1.23 or earlier, then you might experience limitations on performance when using Managed Connection Pooling.\n- If you're using Managed Connection Pooling in `transaction` pooling mode, then\n the following SQL features aren't supported:\n\n - `SET/RESET`\n - `LISTEN`\n - `WITH HOLD CURSOR`\n - `PREPARE/DEALLOCATE`\n - `PRESERVE/DELETE ROW` temp tables\n - `LOAD`\n - Session-level advisory locks\n- If you're using the\n [asyncpg database interface library](https://magicstack.github.io/asyncpg/current/)\n for Managed Connection Pooling pooler on port 3307 and 6432, then you must update the\n `max_prepared_statements` to a value larger than 0 to enable support for\n prepared statements in Managed Connection Pooling pooler.\n\n- If you're using Cloud SQL for PostgreSQL version 17, then the\n `sslnegotiation=direct` option isn't supported.\n\n- Client IP tracking isn't supported with Managed Connection Pooling. If you enable\n *store client IP addresses* in [query insights](/sql/docs/postgres/using-query-insights),\n then client IP addresses are displayed as `local` instead of the IP address\n itself.\n\nWhat's next\n-----------\n\n- [Create an instance](/sql/docs/postgres/create-instance)\n- [Configure Managed Connection Pooling](/sql/docs/postgres/configure-mcp)"]]