Questa pagina fornisce best practice ed esempi di codice specifici per il linguaggio per aiutarti a creare applicazioni che utilizzano efficacemente 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 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 Cloud Run
- 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, 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 vengano sempre restituite al pool al termine. 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 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#
Vai
Ruby
PHP
Al momento PDO non offre alcuna funzionalità per configurare i limiti di connessione.
Backoff esponenziale
Se la tua applicazione tenta di connettersi al database e non ci riesce, il database potrebbe essere temporaneamente non disponibile. In questo caso, l'invio ripetuto di richieste di connessione comporta uno spreco di 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 una connessione dal pool. Se si verificano errori nel mezzo di una transazione, l'applicazione deve eseguire il nuovo tentativo dall'inizio della 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 l'applicazione gestisca in modo corretto le connessioni non riuscite o non attive.
Python
Java
Node.js
C#
Vai
Al momento il pacchetto database/sql non offre alcuna funzionalità per configurare il timeout di connessione. Il timeout è configurato a livello di driver.
Ruby
PHP
Terminare una connessione
Gli utenti con il privilegio PROCESS
in Cloud SQL possono elencare le connessioni che non gestiscono. In MySQL 5.7.x, gli utenti devono disporre del privilegio SUPER
e in MySQL 8.0.x devono disporre del privilegio CONNECTION_ADMIN
per eseguire un'istruzione KILL
su queste connessioni. L'istruzione KILL
termina la connessione di qualsiasi altro utente mysql (tranne gli utenti amministrativi Cloud SQL). Gli utenti senza questi privilegi possono solo elencare e terminare le connessioni
che gestiscono.
Puoi elencare le connessioni a un'istanza utilizzando il client mysql ed
eseguendo il comando SHOW PROCESSLIST
. Usa Id
per terminare la connessione.
Ad esempio:
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
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
Al momento, la libreria Node.js "mysql" non offre alcuna funzionalità per controllare la durata di una connessione.
C#
Vai
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.
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.
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 l'applicazione 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 lavorare con Cloud SQL.
- Scopri di più sulla connessione da un'applicazione esterna.