Auf dieser Seite werden gerichtete Lesevorgänge in Spanner und ihre Verwendung beschrieben.
Gerichtete Lesevorgänge in Spanner bieten die Flexibilität, schreibgeschützte Transaktionen und einzelne Lesevorgänge an einen bestimmten Replikattyp oder eine bestimmte Region innerhalb einer biregionalen oder multiregionalen Instanz konfiguration oder einer benutzerdefinierten regionalen Konfiguration mit optionalen schreibgeschützten Regionen weiterzuleiten.
Vorteile
Gerichtete Lesevorgänge bieten folgende Vorteile:
- Mehr Kontrolle über die Lastverteilung von Arbeitslasten auf mehrere Regionen, um eine gleichmäßigere CPU-Auslastung zu erzielen und eine Überbereitstellung von Spanner-Instanzen zu vermeiden.
- Arbeitslastisolation aktivieren. Sie können Ihre Analysearbeitslasten und Änderungsstream-Lesevorgänge an bestimmte Spanner-Replikate weiterleiten, um die Auswirkungen auf Transaktionsarbeitslasten zu minimieren, die in derselben Spanner-Datenbank ausgeführt werden.
Unterstützte Abfragevorgänge
| Abfragevorgänge | Werden gerichtete Lesevorgänge unterstützt? |
|---|---|
| Lesevorgang veralteter Daten | Ja |
| Starke Lesevorgänge | Ja |
| Lese-/Schreibtransaktion | Nein |
Gerichtete Lesevorgänge werden für Lese-/Schreibtransaktionen
und partitionierte DML Typen von Bulk-Aktualisierungen nicht unterstützt. Das liegt daran, dass Lese-/Schreibtransaktionen in der führenden Region verarbeitet werden müssen. Wenn gerichtete Lesevorgänge in einer Lese-/Schreibtransaktion verwendet werden, schlägt die Transaktion mit einem BAD_REQUEST-Fehler fehl.
Beschränkungen
Für gerichtete Lesevorgänge in Spanner gelten die folgenden Einschränkungen:
- Sie können gerichtete Lesevorgänge nur in einer Spanner-Instanz verwenden, die sich in einer biregionalen Instanzkonfiguration oder multiregionalen Instanzkonfiguration oder einer benutzerdefinierten regionalen Konfiguration mit optionalen schreibgeschützten Regionen befindet.
- Sie können gerichtete Lesevorgänge nicht mit Lese-/Schreibanfragen verwenden, da Schreibanfragen immer von der führenden Region verarbeitet werden.
- Sie können gerichtete Lesevorgänge nicht in der Google Cloud Console oder der Google Cloud CLI verwenden. Sie sind über die REST und RPC APIs und die Spanner Clientbibliotheken verfügbar.
- Sie können maximal 10 Replikate in einem einzelnen gerichteten Lesevorgang angeben.
Hinweis
Beachten Sie Folgendes, bevor Sie gerichtete Lesevorgänge verwenden:
- Bei der Weiterleitung von Lesevorgängen an ein anderes Replikat oder eine andere Region als die, die sich am nächsten an der Anwendung befindet, kann es zu einer zusätzlichen Latenz kommen.
- Sie können Traffic basierend auf Folgendem weiterleiten:
- Regionsname (z. B.
us-central1). - Replikattyp (mögliche Werte:
READ_ONLYundREAD_WRITE).
- Regionsname (z. B.
- Die Option für das automatische Failover ist für gerichtete Lesevorgänge standardmäßig aktiviert. Wenn die Option für das automatische Failover aktiviert ist und alle angegebenen Replikate nicht verfügbar oder fehlerhaft sind, leitet Spanner Anfragen an ein Replikat außerhalb der Liste
includeReplicasweiter. Wenn Sie die Option für das automatische Failover deaktivieren und alle angegebenen Replikate nicht verfügbar oder fehlerhaft sind, schlägt die Anfrage für gerichtete Lesevorgänge fehl.
Parameter für gerichtete Lesevorgänge
Wenn Sie die REST oder RPC API verwenden, um gerichtete Lesevorgänge auszuführen, müssen Sie diese Felder im Parameter directedReadOptions definieren. Sie können nur includeReplicas oder excludeReplicas verwenden, nicht beide.
includeReplicas: Enthält eine wiederholte Gruppe vonreplicaSelections. Diese Liste gibt die Reihenfolge an, in der gerichtete Lesevorgänge für bestimmte Regionen oder Replikattypen berücksichtigt werden sollen. Sie können maximal 10includeReplicasangeben.replicaSelections: Besteht aus demlocation- odertype-Replikat, das die Anfrage für gerichtete Lesevorgänge verarbeitet. Wenn SieincludeReplicasverwenden, müssen Sie mindestens eines der folgenden Felder angeben:location: Der Standort, der die Anfrage für gerichtete Lesevorgänge verarbeitet. Der Standort muss eine der Regionen in der biregionalen oder multiregionalen Konfiguration Ihrer Datenbank sein. Wenn der Standort nicht eine der Regionen in der biregionalen oder multiregionalen Konfiguration Ihrer Datenbank ist, werden Anfragen nicht wie erwartet weitergeleitet. Stattdessen werden sie von der nächstgelegenen Region verarbeitet. Sie können Lesevorgänge beispielsweise an den Standortus-central1in einer Datenbank in der multiregionalen Instanzkonfigurationnam6weiterleiten.Sie können den
locationParameter auch mit einemleaderodernon-leaderStringliteral angeben. Wenn Sie den Wertleadereingeben, leitet Spanner Ihre Anfragen an das führende Replikat der Datenbank weiter. Wenn Sie den Wertnon-leadereingeben, verarbeitet Spanner die Anfrage im nächstgelegenen nicht führenden Replikat.type: Der Replikattyp, der die Anfrage für gerichtete Lesevorgänge verarbeitet. Mögliche Typen sindREAD_WRITEundREAD_ONLY.
autoFailoverDisabled: Standardmäßig ist dieser Wert aufFalsegesetzt, was bedeutet, dass das automatische Failover aktiviert ist. Wenn die Option für das automatische Failover aktiviert ist und alle angegebenen Replikate nicht verfügbar oder fehlerhaft sind, leitet Spanner Anfragen an ein Replikat außerhalb der ListeincludeReplicasweiter. Wenn Sie die Option für das automatische Failover deaktivieren und alle angegebenen Replikate nicht verfügbar oder fehlerhaft sind, schlägt die Anfrage für gerichtete Lesevorgänge fehl. Mögliche Werte sindTRUEfür deaktiviert undFALSEfür aktiviert.
excludeReplicas: Enthält eine wiederholte Gruppe vonreplicaSelections, die nicht zum Verarbeiten von Anfragen verwendet werden. Spanner leitet Anfragen nicht an Replikate in dieser Liste weiter.replicaSelections: Der Standort oder Replikattyp, der nicht zum Verarbeiten der Anfrage für gerichtete Lesevorgänge verwendet wird. Wenn SieexcludeReplicasverwenden, müssen Sie mindestens eines der folgenden Felder angeben:location: Der Standort, der nicht zum Verarbeiten der Anfrage für gerichtete Lesevorgänge verwendet wird.type: Der Replikattyp, der nicht zum Verarbeiten der Anfrage für gerichtete Lesevorgänge verwendet wird. Mögliche Typen sindREAD_WRITEundREAD_ONLY.
Ein Beispiel für den Text einer REST-Anfrage finden Sie im Tab „REST“ im Abschnitt Gerichtete Lesevorgänge verwenden.
Gerichtete Lesevorgänge verwenden
Sie können die Spanner-Clientbibliotheken und die REST und RPC APIs verwenden, um gerichtete Lesevorgänge auszuführen.
Clientbibliotheken
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Sie können die folgenden REST APIs verwenden, um gerichtete Lesevorgänge auszuführen:
So führen Sie beispielsweise gerichtete Lesevorgänge in us-central1 mit executeSQL aus:
Klicken Sie auf
projects.instances.databases.sessions.executeSql.Geben Sie für session (Sitzung) Folgendes ein:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>Ersetzen Sie Folgendes:
- PROJECT-ID: Projekt-ID.
- INSTANCE-ID: Instanz-ID.
- DATABASE-ID: Datenbank-ID.
- SESSION-ID: Sitzungs-ID.
Sie erhalten den
SESSION-IDWert, wenn Sie eine Sitzung erstellen.
Verwenden Sie Folgendes für Request body (Anfragetext):
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }Klicken Sie auf Execute (Ausführen). In der Antwort werden die Abfrageergebnisse angegeben.
RPC
Sie können die folgenden RPC APIs verwenden, um gerichtete Lesevorgänge auszuführen:
Monitoring
Spanner bietet einen Latenzmesswert, mit dem Sie die Aktivitäten für gerichtete Lesevorgänge in Ihren Instanzen überwachen können. Der Messwert ist in Cloud Monitoring verfügbar.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Sie können diesen Messwert mit den Feldern /serving_location oder /is_directed_read filtern. Das Feld /serving location gibt den Standort des Spanner-Servers an, von dem die Anfrage verarbeitet wird. Das Feld /is_directed_read gibt an, ob die Option für gerichtete Lesevorgänge aktiviert ist.
Eine vollständige Liste der verfügbaren Messwerte finden Sie unter Liste der Messwerte für Spanner.
Nächste Schritte
- Lesevorgänge außerhalb von Transaktionen ausführen