Diese Seite enthält Best Practices und sprachspezifische Codebeispiele, mit denen Sie Anwendungen erstellen können, die Cloud SQL-Datenbankverbindungen effektiv nutzen.
Die Beispiele sind Auszüge aus einer vollständigen Webanwendung, die Ihnen auf GitHub zur Verfügung steht. Weitere Informationen
Um eine Schritt-für-Schritt-Anleitung zum Ausführen einer mit Cloud SQL verbundenen Beispiel-Webanwendung zu erhalten, klicken Sie auf den Link für Ihre Umgebung:
- Kurzanleitung zum Herstellen einer Verbindung von Ihrem lokalen Computer
- Kurzanleitung zum Herstellen einer Verbindung von Compute Engine
- Kurzanleitung zum Herstellen einer Verbindung über Cloud Run
- Kurzanleitung zum Herstellen einer Verbindung über Cloud Functions
- Kurzanleitung zum Herstellen einer Verbindung von Google Kubernetes Engine
Verbindungspools
Ein Verbindungspool ist ein Cache von Datenbankverbindungen, die zur Verbesserung der Verbindungslatenz und -leistung gemeinsam genutzt und wiederverwendet werden. Wenn eine Anwendung eine Datenbankverbindung benötigt, leiht sie sich vorübergehend eine aus dem Pool aus. Sobald die Anwendung die Verbindung nicht mehr benötigt, gibt sie sie an den Pool zurück. Dort steht sie zur erneuten Verwendung zur Verfügung.
Verbindungen öffnen und schließen
Wenn Sie einen Verbindungspool verwenden, müssen Sie die Verbindungen ordnungsgemäß öffnen und schließen, damit sie immer wieder an den Pool zurückgegeben werden, sobald Sie sie nicht mehr brauchen. Nicht zurückgegebene oder "verlorene" Verbindungen werden nicht wiederverwendet, was Ressourcen verschwendet und zu Leistungsengpässen für Ihre Anwendung führen kann.
Python
Java
Node.js
C#
Go
Ruby
PHP
Verbindungsanzahl
Jede Datenbankverbindung nutzt client- und serverseitige Ressourcen. Darüber hinaus sind in Cloud SQL Verbindungslimits festgelegt, die nicht überschritten werden können. Das Erstellen und Verwenden von weniger Verbindungen verringert den Aufwand und hilft Ihnen, das Verbindungslimit einzuhalten.
Python
Java
Node.js
C#
Go
Ruby
PHP
PDO bietet derzeit keine Funktion zum Konfigurieren von Verbindungslimits.
Exponentielle Backoffs
Wenn Ihre Anwendung erfolglos versucht, eine Verbindung zur Datenbank herzustellen, ist die Datenbank möglicherweise vorübergehend nicht verfügbar. In diesem Fall verschwendet das Senden wiederholter Verbindungsanfragen Ressourcen. Es ist besser, vor dem Senden zusätzlicher Verbindungsanfragen zu warten, damit die Datenbank wieder zugänglich ist. Mit einem exponentiellen Backoff oder einem anderen Verzögerungsmechanismus wird dieses Ziel erreicht.
Dieser Wiederholungsversuch ist nur bei der ersten Verbindung oder beim ersten Zugriff auf eine Verbindung aus dem Pool sinnvoll. Wenn während einer Transaktion Fehler auftreten, muss die Anwendung den Wiederholungsversuch ausführen und dabei die Transaktion von vorn starten. Selbst wenn der Pool ordnungsgemäß konfiguriert ist, können bei Verbindungsunterbrechungen in der Anwendung Fehler auftreten.
Python
Java
Node.js
C#
Go
Das Paket database/sql bietet derzeit keine Funktion zum Konfigurieren von exponentiellen Backoffs.
Ruby
PHP
PDO bietet derzeit keine Funktion zum Konfigurieren von exponentiellen Backoffs.
Zeitüberschreitung der Verbindung
Es gibt viele Gründe, warum ein Verbindungsversuch fehlschlagen kann. Die Netzwerkkommunikation kann niemals garantiert werden und die Datenbank reagiert möglicherweise vorübergehend nicht. Achten Sie darauf, dass Ihre Anwendung unterbrochene oder fehlgeschlagene Verbindungen ordnungsgemäß verarbeitet.
Python
Java
Node.js
C#
Go
Das Paket database/sql bietet derzeit keine Funktion zum Konfigurieren von Zeitlimits für Verbindungen. Zeitlimits werden auf Treiberebene konfiguriert.
Ruby
PHP
Verbindung beenden
Nutzer mit der Berechtigung PROCESS
in Cloud SQL können Verbindungen auflisten, die sie nicht verwalten. In MySQL 5.7.x müssen Nutzer die Berechtigung SUPER
und in MySQL 8.0.x die Berechtigung CONNECTION_ADMIN
haben, um eine KILL
-Anweisung für diese Verbindungen auszuführen. Die Anweisung KILL
beendet die Verbindung eines anderen MySQL-Nutzers (außer Cloud SQL-Administratornutzer). Nutzer ohne diese Berechtigungen können nur Verbindungen auflisten und beenden, die sie verwalten.
Sie können die Verbindungen zu einer Instanz mit dem MySQL-Client und dem Befehl SHOW PROCESSLIST
auflisten. Verwenden Sie Id
, um die Verbindung zu beenden.
Beispiel:
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
Verbindungsdauer
Durch die Begrenzung der Verbindungsdauer kann verhindert werden, dass sich abgebrochene Verbindungen ansammeln. Die Verbindungsdauer können Sie über den Verbindungspool begrenzen.
Python
Java
Node.js
Die Node.js-Bibliothek mysql bietet derzeit keine Funktion zum Steuern der Verbindungsdauer.
C#
Go
Ruby
ActiveRecord bietet derzeit keine Funktion zum Steuern der Verbindungsdauer.
PHP
PDO bietet derzeit keine Funktion zum Steuern der Verbindungsdauer.
Vollständige Anwendung ansehen
Klicken Sie unten auf den jeweiligen Link, um sich die vollständige Anwendung anzusehen.
Python
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Python an.
Java
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Java an.
Node.js
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Node.js an.
C#
Sehen Sie sich die vollständige Anwendung für die Programmiersprache C# an.
Go
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Go an.
Ruby
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Ruby an.
PHP
Sehen Sie sich die vollständige Anwendung für die Programmiersprache PHP an.
Nächste Schritte
- Mehr zu privaten IP-Adressen
- Mehr zu Kontingenten und Einschränkungen für Cloud SQL und App Engine
- Mehr zu Best Practices für die Arbeit mit Cloud SQL
- Mehr zum Herstellen einer Verbindung von einer externen Anwendung