Questa pagina fornisce best practice ed esempi di codice specifici per i vari linguaggi e creare applicazioni che usano le connessioni ai database Cloud SQL in modo efficace.
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 collegata 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 dalle funzioni di Cloud Run
- Guida rapida per la connessione da Google Kubernetes Engine
Pool di connessione
Un pool di connessioni è una cache di connessioni di database condivise e riutilizzate per migliorare la latenza e le prestazioni della connessione. Quando l'applicazione ha bisogno di una connessione al database, la prende in prestito temporaneamente dal pool. Al termine dell'utilizzo, la connessione viene restituita 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 le connessioni vengano sempre restituite al pool quando che li rappresentano. Le connessioni non restituite o "perse" non vengono riutilizzate, il che comporta uno spreco di risorse e può causare colli di bottiglia nel rendimento dell'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 meno connessioni riducono i costi di gestione e ti consentono di non interrompere sotto il limite di connessioni.
Python
Java
Node.js
C#
Vai
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 e non va a buon fine, potrebbe essere temporaneamente non disponibile. In questo caso, l'invio ripetuto richieste di connessione spreca risorse. È preferibile attendere prima di inviare altre 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 alla prima connessione o alla prima acquisizione di un dal pool. Se si verificano errori nel corso di una transazione, application deve ripetere l'operazione dall'inizio di un transazione. Pertanto, anche se il pool è configurato correttamente, l'applicazione potrebbe comunque riscontrare 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
Al momento PDO non offre alcuna funzionalità per configurare il backoff esponenziale.
Timeout connessione
Esistono diversi motivi per cui un tentativo di connessione potrebbe non riuscire. La comunicazione sulla rete non è mai garantita e il database potrebbe non essere temporaneamente in grado di rispondere. Assicurati che la tua applicazione gestisca i problemi o non vada a buon fine le connessioni senza complicazioni.
Python
Java
Node.js
C#
Vai
Il pacchetto database/sql attualmente non offre 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 evitare 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
Al momento ActiveRecord non offre funzionalità per controllare la durata di una connessione.
PHP
Al momento, PDO non offre alcuna funzionalità per controllare la durata di una connessione.
Visualizzare la richiesta completa
Per visualizzare la richiesta completa, fai clic sul link di seguito.
Python
Visualizza l'applicazione completa per il linguaggio di programmazione Python.
Node.js
Visualizza la richiesta 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ù sull'IP privato.
- Scopri di più su quote e limiti per Cloud SQL e App Engine.
- Scopri di più sulle best practice per lavorare con Cloud SQL.