Questa pagina fornisce best practice ed esempi di codice specifici per i linguaggi per aiutarti a creare applicazioni che utilizzano in modo efficace le connessioni ai database Cloud SQL.
Questi esempi sono estratti di un'applicazione web completa disponibile su GitHub. Scopri di più.
Per istruzioni dettagliate sull'esecuzione di un'applicazione web di esempio connessa a Cloud SQL, segui il link per il tuo ambiente:
- Guida rapida per la connessione dal computer locale
- Guida rapida per la connessione da Compute Engine
- Guida rapida per la connessione da Cloud Run
- Guida rapida per la connessione da Cloud Functions
- Guida rapida per la connessione da Google Kubernetes Engine
Pool di connessione
Un pool di connessioni è una cache di connessioni di database che vengono condivise e riutilizzate per migliorare la latenza e le prestazioni della connessione. Quando l'applicazione richiede una connessione al database, ne prende temporaneamente in prestito una dal pool; quando l'applicazione ha completato la connessione, restituisce la connessione al pool, dove può essere riutilizzata la prossima volta che l'applicazione richiede una connessione al database.
Aprire e chiudere le connessioni
Quando utilizzi un pool di connessioni, devi aprire e chiudere le connessioni correttamente, in modo che le connessioni vengano sempre restituite al pool quando hai finito di utilizzarle. Le connessioni non ripristinate o "perdite" non vengono riutilizzate, il che comporta uno spreco di risorse e può causare colli di bottiglia delle prestazioni per l'applicazione.
Python
Java
Node.js
C#
Go
Ruby
PHP
Numero di connessioni
Ogni connessione al database utilizza risorse lato client e lato server. Inoltre, Cloud SQL impone limiti di connessione complessivi che non possono essere superati. La creazione e l'utilizzo di meno connessioni riducono l'overhead e ti aiutano a rimanere al di sotto del limite di connessioni.
Python
Java
Node.js
C#
Go
Ruby
PHP
Al momento PDO non offre alcuna funzionalità per configurare i limiti di connessione.
Backoff esponenziale
Se l'applicazione tenta di connettersi al database senza riuscirci, il database potrebbe essere temporaneamente non disponibile. In questo caso, l'invio di richieste di connessione ripetute comporta uno spreco di risorse. È preferibile attendere prima di inviare richieste di connessione aggiuntive per consentire al database di tornare ad accedere. L'utilizzo di un backoff esponenziale o di un altro meccanismo di ritardo consente di raggiungere questo obiettivo.
Questo nuovo tentativo ha senso solo alla prima connessione o quando si ottiene una connessione dal pool per la prima volta. Se si verificano errori a metà di una transazione, l'applicazione deve ripetere questo tentativo dall'inizio della transazione. Quindi, anche se il pool è configurato correttamente, l'applicazione potrebbe comunque visualizzare errori in caso di perdita delle connessioni.
Python
Java
Node.js
C#
Go
Il pacchetto database/sql al momento non offre alcuna funzionalità per configurare il backoff esponenziale.
Ruby
PHP
Al momento PDO non offre alcuna funzionalità per configurare il backoff esponenziale.
Timeout della connessione
Esistono molti motivi per cui un tentativo di connessione potrebbe non riuscire. La comunicazione di rete non è mai garantita e il database potrebbe non essere temporaneamente in grado di rispondere. Assicurati che l'applicazione gestisca le connessioni interrotte o non riuscite.
Python
Java
Node.js
C#
Go
Il pacchetto database/sql al momento non offre alcuna funzionalità per configurare il timeout della connessione. Il timeout è configurato a livello di driver.
Ruby
PHP
Durata della connessione
Limitare la durata di una connessione può aiutare a impedire l'accumulo di connessioni abbandonate. Puoi utilizzare il pool di connessioni per limitare la durata delle connessioni.
Python
Java
Node.js
La libreria Node.js "node-mssql" al momento non offre alcuna funzionalità per controllare la durata di una connessione.
C#
Go
Ruby
Al momento ActiveRecord non offre alcuna funzionalità per controllare la durata di una connessione.
PHP
Al momento PDO non offre alcuna funzionalità per controllare la durata di una connessione.
Visualizza la domanda completa
Per visualizzare la richiesta di partecipazione completa, fai clic sul collegamento seguente.
Python
Visualizza l'applicazione completa per il linguaggio di programmazione Python.
Node.js
Visualizza l'applicazione completa per il linguaggio di programmazione Node.js.
C#
Visualizza l'applicazione completa per il linguaggio di programmazione C#.
Go
Visualizza l'applicazione completa per il linguaggio di programmazione Go.
PHP
Visualizza l'applicazione completa per il linguaggio di programmazione PHP.
Passaggi successivi
- Scopri di più sull'IP privato.
- Scopri di più su quote e limiti per Cloud SQL e App Engine.
- Scopri le best practice per l'uso di Cloud SQL.