Questa pagina fornisce best practice ed esempi di codice specifici per la lingua per aiutarti a creare applicazioni che utilizzano in modo efficace le connessioni al database Cloud SQL.
Questi esempi sono estratti di un'applicazione web completa disponibile su GitHub. Scopri di più.
Per istruzioni passo passo 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 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 temporaneamente dal pool; 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.
Aprire e chiudere le connessioni
Quando utilizzi un pool di connessioni, devi aprire e chiudere le connessioni correttamente, in modo che vengano sempre restituite al pool quando hai finito di utilizzarle. Le connessioni non restituite o "trapelate" non vengono riutilizzate, il che spreca risorse e può causare colli di bottiglia delle prestazioni per la tua applicazione.
Python
Java
Node.js
C#
Go
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 al di sotto del limite di connessioni.
Python
Java
Node.js
C#
Go
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 non essere temporaneamente 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 consente di raggiungere questo obiettivo.
Questo nuovo tentativo ha senso solo quando ci si connette per la prima volta o quando si recupera una connessione dal pool. Se si verificano errori a metà di una transazione, l'applicazione deve riprovare 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
Il pacchetto database/sql al momento 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 non essere temporaneamente in grado di rispondere. Assicurati che la tua applicazione gestisca correttamente le connessioni interrotte o non riuscite.
Python
Java
Node.js
C#
Vai
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ò contribuire a evitare 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 "knex" al momento non offre alcuna funzionalità per controllare la durata di una connessione.
C#
Go
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.
Visualizzare la richiesta completa
Per visualizzare l'applicazione completa, fai clic sul link di seguito.
Python
Visualizza l'applicazione completa per il linguaggio di programmazione Python.
Java
Visualizza l'applicazione completa per il linguaggio di programmazione Java.
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 la richiesta completa per il linguaggio di programmazione Go.
Ruby
Visualizza la richiesta completa per il linguaggio di programmazione Ruby.
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'utilizzo di Cloud SQL.
- Scopri di più sulla connessione da un'applicazione esterna.