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 disponibili su GitHub. Scopri di più.
Per istruzioni dettagliate sull'esecuzione di un sito 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 Functions
- 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 la tua applicazione ha bisogno connessione al database, ne prende temporaneamente una dal pool; quando termina la connessione, restituisce la connessione in cui potrà essere riutilizzato la prossima volta che l'applicazione ha bisogno di un database connessione.
Apertura e chiusura delle 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. Non restituito o "divulgato" e connessioni non vengono riutilizzate, con conseguente spreco di risorse e possono causare colli di bottiglia nelle prestazioni 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 funzionalità per la configurazione dei limiti di connessioni.
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 richieste di connessione aggiuntive per consentire al database accessibile di nuovo. L'utilizzo di un backoff esponenziale o di un altro meccanismo di ritardo consente di 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. Quindi, anche se il pool è configurato correttamente, l'applicazione continuano a visualizzare errori in caso di perdita della connessione.
Python
Java
Node.js
C#
Vai
Il pacchetto database/sql attualmente non offre 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. Rete la comunicazione non è mai garantita e il database potrebbe non essere temporaneamente in grado per 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
Terminare una connessione
Gli utenti con il privilegio PROCESS
in Cloud SQL possono elencare le connessioni che
che non gestiscono. In MySQL 5.7.x, gli utenti devono disporre del privilegio SUPER
e
MySQL 8.0.x, gli utenti devono disporre del privilegio CONNECTION_ADMIN
per eseguire un
KILL
su queste connessioni. L'istruzione KILL
risolve il
connessione di qualsiasi altro utente MySQL (ad eccezione di quelli amministrativi Cloud SQL
utenti). Gli utenti senza questi privilegi possono solo elencare e terminare le connessioni
che gestisce.
Puoi elencare le connessioni a un'istanza utilizzando il client mysql
eseguendo il comando SHOW PROCESSLIST
. Utilizza Id
per terminare la connessione.
Ad esempio:
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
Durata connessione
Limitare la durata di una connessione può aiutare a impedire l'abbandono delle connessioni si accumulano. Puoi utilizzare il pool di connessioni per limitare la connessione intera durata di vita.
Python
Java
Node.js
"mysql" La libreria Node.js al momento non offre funzionalità per 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 funzionalità per controllare la durata di una connessione.
Visualizza l'applicazione completa
Per vedere la domanda 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 l'applicazione 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 di più sulle best practice per lavorare con Cloud SQL.
- Scopri di più su la connessione da un'applicazione esterna.