Questa pagina fornisce best practice ed esempi di codice specifici per i vari linguaggi per aiutarti a creare applicazioni che utilizzano le connessioni ai database Cloud SQL in modo efficace.
Questi esempi sono estratti di un'applicazione App Engine completa a tua disposizione su GitHub. Scopri di più.
Pool di connessione
Un pool di connessioni è una cache di connessioni al database che vengono 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 temporaneamente una dal pool; al termine dell'applicazione, la connessione restituisce la connessione al pool, dove può essere riutilizzata alla successiva applicazione della connessione al database.
Aprire e chiudere le connessioni
Quando utilizzi un pool di connessioni, devi aprire e chiudere correttamente le connessioni, in modo che queste vengano sempre restituite al pool quando hai terminato. Le connessioni non restituite o "con perdite di dati" 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 client e lato server. Inoltre, Cloud SQL impone limiti di connessione complessivi che non possono essere superati. La creazione e l'utilizzo di un minor numero di connessioni riduce i costi generali e ti aiuta a rimanere al di sotto del limite di connessioni.
Python
Java
Node.js
C#
Go
Ruby
PHP
Al momento PDO non offre funzionalità per configurare i limiti di connessioni.
Backoff esponenziale
Se la tua applicazione tenta di connettersi al database e non riesce, il database potrebbe essere temporaneamente non disponibile. In questo caso, l'invio di troppe richieste di connessione simultanee potrebbe comportare lo spreco di risorse di database aggiuntive e l'aumento del tempo necessario per il ripristino. L'utilizzo di un backoff esponenziale impedisce all'applicazione di inviare un numero non reattivo di richieste di connessione quando non può connettersi al database.
Questo nuovo tentativo ha senso solo quando si connette per la prima volta o quando si acquisisce una connessione dal pool. Se si verificano errori durante una transazione, l'applicazione deve ripetere l'operazione e deve ripetere dall'inizio di una 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 non offre attualmente alcuna funzionalità per configurare il backoff esponenziale.
Ruby
PHP
Al momento PDO non offre funzionalità per configurare il backoff esponenziale.
Timeout connessione
Esistono molti motivi per cui un tentativo di connessione potrebbe non riuscire. Le comunicazioni di rete non sono mai garantite e il database potrebbe essere temporaneamente incapace di rispondere. Assicurati che la tua applicazione gestisca le connessioni interrotte o non riuscite correttamente.
Python
Java
Node.js
C#
Go
Il pacchetto database/sql non offre attualmente 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 della connessione.
Python
Java
Node.js
La libreria 'node-mssql' Node.js al momento non offre alcuna funzionalità per controllare la durata di una connessione.
C#
Go
Ruby
Attualmente ActiveRecord non offre alcuna funzionalità per controllare la durata di una connessione.
PHP
Al momento PDO non offre funzionalità per controllare la durata di una connessione.
Visualizza la domanda completa
Per visualizzare la domanda 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#.
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 le quote e i limiti per Cloud SQL e App Engine.
- Scopri le best practice per l'uso di Cloud SQL.