Vous trouverez sur cette page des bonnes pratiques et des exemples de code propres aux langages. Ils vous aideront à créer des applications qui utilisent efficacement les connexions à la base de données Cloud SQL.
Ces exemples sont des extraits d'une application Web complète disponible sur GitHub. En savoir plus
Pour obtenir des instructions détaillées concernant l'exécution d'un exemple d'application Web connectée à Cloud SQL, suivez le lien correspondant à votre environnement :
- Guide de démarrage rapide pour la connexion depuis votre ordinateur local
- Guide de démarrage rapide pour la connexion depuis Compute Engine
- Guide de démarrage rapide pour la connexion depuis Cloud Run
- Guide de démarrage rapide pour la connexion depuis les fonctions Cloud Run
- Guide de démarrage rapide pour la connexion depuis Google Kubernetes Engine
Pools de connexions
Un pool de connexions est un cache de connexions à la base de données, qui sont partagées et réutilisées pour améliorer la latence et les performances de connexion. Lorsque l'application a besoin d'une connexion à une base de données, elle en emprunte une temporairement dans son pool. Une fois qu'elle en a terminé avec cette connexion, elle la renvoie au pool, où elle pourra la réutiliser la prochaine fois qu'elle aura besoin d'une connexion à une base de données.
Ouvrir et fermer des connexions
Lorsque vous utilisez un pool de connexions, vous devez ouvrir et fermer les connexions correctement, de sorte qu'elles soient toujours renvoyées au pool une fois que vous avez terminé. En cas de non-renvoi ou de "fuite" des connexions, elles ne sont pas réutilisées, ce qui gaspille des ressources et peut entraîner des goulots d'étranglement affectant les performances de l'application.
Python
Java
Node.js
C#
Go
Ruby
PHP
Nombre de connexions
Chaque connexion à la base de données emploie des ressources côté client et côté serveur. De plus, Cloud SQL impose des limites globales de connexions qui ne peuvent pas être dépassées. Créer et utiliser moins de connexions permet de réduire les frais généraux et de rester sous la limite de connexions.
Python
Java
Node.js
C#
Go
Ruby
PHP
PDO ne propose actuellement aucune fonctionnalité permettant de configurer des limites de connexion.
Intervalle exponentiel entre les tentatives
Si l'application tente sans succès de se connecter à la base de données, il se peut que cette dernière soit temporairement indisponible. Dans ce cas, l'envoi de requêtes de connexion répétées gaspille des ressources. Il est préférable d'attendre avant d'envoyer des requêtes de connexion supplémentaires afin de permettre à la base de données d'être à nouveau accessible. L'utilisation d'un intervalle exponentiel entre les tentatives ou d'un autre mécanisme de retardement permet d'atteindre cet objectif.
Une nouvelle tentative n'a alors de sens que lors de la première connexion, ou lors de la première obtention d'une connexion à partir du pool. Si des erreurs se produisent au milieu d'une transaction, l'application doit effectuer la nouvelle tentative, puis recommencer depuis le début d'une transaction. Ainsi, même si votre pool est correctement configuré, l'application peut toujours afficher des erreurs en cas de perte de connexion.
Python
Java
Node.js
C#
Go
Le package database/sql ne propose actuellement aucune fonctionnalité permettant de configurer l'intervalle exponentiel entre les tentatives.
Ruby
PHP
PDO ne propose actuellement aucune fonctionnalité permettant de configurer un intervalle exponentiel entre les tentatives.
Délai de connexion
De nombreuses raisons peuvent expliquer l'échec d'une tentative de connexion. La communication réseau n'est jamais garantie, et la base de données peut être temporairement dans l'impossibilité de répondre. Assurez-vous que votre application gère de manière optimale les connexions interrompues ou infructueuses.
Python
Java
Node.js
C#
Go
Le package database/sql ne propose actuellement aucune fonctionnalité permettant de configurer le délai avant expiration de la connexion. Le délai avant expiration est configuré au niveau du pilote.
Ruby
PHP
Mettre fin à une connexion
Les utilisateurs disposant du privilège PROCESS
dans Cloud SQL peuvent lister les connexions qu'ils ne gèrent pas. Dans MySQL 5.7.x, les utilisateurs doivent disposer du droit SUPER
et dans MySQL 8.0.x, ils doivent disposer du droit CONNECTION_ADMIN
pour exécuter une instruction KILL
sur ces connexions. L'instruction KILL
met fin à la connexion de tout autre utilisateur mysql (à l'exception des administrateurs Cloud SQL). Les utilisateurs qui ne disposent pas de ces droits ne peuvent lister et mettre fin qu'aux connexions qu'ils gèrent.
Vous pouvez afficher les connexions à une instance à l'aide du client mysql, en exécutant la commande SHOW PROCESSLIST
. Utilisez Id
pour mettre fin à la connexion.
Exemple :
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
Durée de la connexion
Limiter la durée de vie d'une connexion peut aider à empêcher l'accumulation de connexions abandonnées. Pour ce faire, vous pouvez utiliser le pool de connexions.
Python
Java
Node.js
La bibliothèque Node.js mysql ne propose actuellement aucune fonctionnalité permettant de contrôler la durée d'une connexion.
C#
Go
Ruby
ActiveRecord ne propose actuellement aucune fonctionnalité permettant de contrôler la durée d'une connexion.
PHP
PDO ne propose actuellement aucune fonctionnalité permettant de contrôler la durée d'une connexion.
Afficher l'application complète
Pour voir l'application complète, cliquez sur le lien ci-dessous.
Python
Affichez l'application complète pour le langage de programmation Python.
Java
Affichez l'application complète pour le langage de programmation Java.
Node.js
Affichez l'application complète pour le langage de programmation Node.js.
C#
Affichez l'application complète pour le langage de programmation C#.
Go
Affichez l'application complète pour le langage de programmation Go.
Ruby
Affichez l'application complète pour le langage de programmation Ruby.
PHP
Affichez l'application complète pour le langage de programmation PHP.
Étape suivante
- Apprenez-en plus sur les adresses IP privées.
- Découvrez les quotas et les limites pour Cloud SQL et App Engine.
- Découvrez les bonnes pratiques de travail avec Cloud SQL.
- Apprenez à vous connecter depuis une application externe.