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 Run-Funktion
- 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.
Mit TCP verbinden
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Hinweis:
- CLOUD_SQL_CONNECTION_NAME sollte als <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME> dargestellt werden.
- Die Verwendung des Arguments ipTypes=PRIVATE erzwingt, dass die SocketFactory eine Verbindung zur zugeordneten privaten IP-Adresse einer Instanz herstellen kann.
- Die Anforderungen für die JDBC Socket Factory-Version der pom.xml-Datei finden Sie hier.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Mit Unix-Sockets verbinden
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
Wenn Sie dieses Snippet im Kontext einer Webanwendung sehen möchten, rufen Sie die README-Datei auf GitHub auf.
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.
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.
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.
Das Paket database/sql bietet derzeit keine Funktion zum Konfigurieren von exponentiellen Backoffs.
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.
Das Paket database/sql bietet derzeit keine Funktion zum Konfigurieren von Zeitlimits für Verbindungen. Zeitlimits werden auf Treiberebene konfiguriert.
Verbindungsdauer
Durch die Begrenzung der Verbindungsdauer kann verhindert werden, dass sich abgebrochene Verbindungen ansammeln. Die Verbindungsdauer können Sie über den Verbindungspool begrenzen.
Die Node.js-Bibliothek knex bietet derzeit keine Funktion zum Steuern der Verbindungsdauer.
ActiveRecord bietet derzeit keine Funktion zum Steuern der Verbindungsdauer.
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.
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Python an.
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Java an.
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Node.js an.
Sehen Sie sich die vollständige Anwendung für die Programmiersprache C# an.
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Go an.
Sehen Sie sich die vollständige Anwendung für die Programmiersprache Ruby an.
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