Questa pagina fornisce best practice ed esempi di codice specifici per il linguaggio per aiutarti a creare applicazioni che utilizzano in modo efficace le connessioni al database Cloud SQL.
Questi esempi sono estratti da un'applicazione web completa disponibile su GitHub. Scopri di più.
Per istruzioni passo passo su come eseguire 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 Run Functions
- Guida rapida per la connessione da Google Kubernetes Engine
Pool di connessione
Un pool di connessioni è una cache di connessioni al database condivise e riutilizzate per migliorare la latenza e le prestazioni della connessione. Quando l'applicazione ha bisogno di una connessione al database, ne prende in prestito una dal pool temporaneamente; quando l'applicazione ha terminato di utilizzare la connessione, la restituisce al pool, dove può essere riutilizzata la volta successiva che l'applicazione ha bisogno di una connessione al database.
Apri e chiudi le connessioni
Quando utilizzi un pool di connessioni, devi aprire e chiudere correttamente le connessioni, in modo che vengano sempre restituite al pool quando hai finito di utilizzarle. Le connessioni non restituite o "perdute" non vengono riutilizzate, il che spreca risorse e può causare colli di bottiglia delle prestazioni per l'applicazione.
Python
Java
Node.js
C#
Vai
Ruby
PHP
Conteggio 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 un numero inferiore di connessioni riduce l'overhead e ti aiuta a rimanere entro il limite di connessione.
Python
Java
Node.js
C#
Vai
Ruby
PHP
PDO al momento non offre alcuna funzionalità per configurare i limiti di connessione.
Backoff esponenziale
Se l'applicazione tenta di connettersi al database e non riesce, il database potrebbe essere temporaneamente non disponibile. In questo caso, l'invio ripetuto di richieste di connessione spreca risorse. È preferibile attendere prima di inviare ulteriori richieste di connessione per consentire al database di diventare di nuovo accessibile. L'utilizzo di un backoff esponenziale o di un altro meccanismo di ritardo raggiunge questo obiettivo.
Questo nuovo tentativo ha senso solo quando ti connetti per la prima volta o quando prendi una connessione dal pool per la prima volta. Se si verificano errori durante una transazione, l'applicazione deve eseguire il nuovo tentativo e deve riprovare dall'inizio di una transazione. Pertanto, anche se il pool è configurato correttamente, l'applicazione potrebbe comunque visualizzare errori se le connessioni vengono perse.
Python
Java
Node.js
C#
Vai
Al momento il pacchetto database/sql non offre alcuna funzionalità per configurare il backoff esponenziale.
Ruby
PHP
PDO al momento non offre alcuna funzionalità per configurare il backoff esponenziale.
Timeout connessione
Esistono molti motivi per cui un tentativo di connessione potrebbe non riuscire. La comunicazione di rete non è mai garantita e il database potrebbe essere temporaneamente in grado di rispondere. Assicurati che l'applicazione gestisca correttamente le connessioni interrotte o non riuscite.
Python
Java
Node.js
C#
Vai
Al momento il pacchetto database/sql non offre alcuna funzionalità per configurare il timeout della connessione. Il timeout è configurato a livello di driver.
Ruby
PHP
Durata connessione
Limitare la durata di una connessione può contribuire a impedire l'accumulo di connessioni abbandonate. Puoi utilizzare il pool di connessioni per limitare la durata delle connessioni.
Python
Java
Node.js
Al momento la libreria Node.js 'node-mssql' non offre alcuna funzionalità per controllare la durata di una connessione.
C#
Vai
Ruby
ActiveRecord al momento non offre alcuna funzionalità per controllare la durata di una connessione.
PHP
PDO al momento non offre alcuna funzionalità per controllare la durata di una connessione.
Visualizza l'applicazione completa
Per visualizzare l'applicazione completa, fai clic sul link di seguito.
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#.
Vai
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ù su IP privato.
- Scopri di più su quote e limiti per Cloud SQL e App Engine.
- Scopri di più sulle best practice per l'utilizzo di Cloud SQL.