Auf der Seite werden Spanner-Lesevorgänge mit Zielangabe und ihre Verwendung beschrieben.
Mit gerichteten Lesevorgängen in Spanner können Sie schreibgeschützte Transaktionen und einzelne Lesevorgänge flexibel an einen bestimmten Replikattyp oder eine bestimmte Region in einer biregionalen oder multiregionalen Instanzkonfiguration oder einer benutzerdefinierten regionalen Konfiguration mit optionalen schreibgeschützten Regionen weiterleiten.
Vorteile
Gezielte Lesevorgänge bieten folgende Vorteile:
- Mehr Kontrolle über das Load-Balancing von Arbeitslasten über mehrere Regionen hinweg, um eine gleichmäßigere CPU-Auslastung zu erzielen und eine Überbereitstellung von Spanner-Instanzen zu vermeiden.
- Arbeitslastisolation aktivieren Sie können Ihre Analysearbeitslasten und Change Stream-Lesevorgänge an bestimmte Spanner-Replikate weiterleiten, um die Auswirkungen auf transaktionale Arbeitslasten zu minimieren, die in derselben Spanner-Datenbank ausgeführt werden.
Unterstützte Abfragevorgänge
Abfragevorgänge | Werden gezielte Lesevorgänge unterstützt? |
---|---|
Veraltete Lesevorgänge | Ja |
Starker Lesevorgang | Ja |
Lese-/Schreibtransaktion | Nein |
Direkte Lesevorgänge werden für Lese-/Schreibtransaktionen und partitionierte DML-Bulk-Updates nicht unterstützt. Das liegt daran, dass Lese-/Schreibtransaktionen in der Leader-Region verarbeitet werden müssen. Wenn gerichtete Lesevorgänge in einer Lese-Schreib-Transaktion verwendet werden, schlägt die Transaktion mit einem BAD_REQUEST
-Fehler fehl.
Beschränkungen
Für Spanner-Direktlesevorgänge gelten die folgenden Einschränkungen:
- Sie können gerichtete Lesevorgänge nur in einer Spanner-Instanz verwenden, die eine Dual-Region-Instanzkonfiguration, eine Multiregion-Instanzkonfiguration oder eine benutzerdefinierte regionale Konfiguration mit optionalen schreibgeschützten Regionen verwendet.
- Sie können keine gerichteten Lesevorgänge mit Lese-/Schreibanfragen verwenden, da Schreibanfragen immer von der führenden Region bedient werden.
- Sie können keine gezielten Lesevorgänge in der Google Cloud Console oder der Google Cloud CLI verwenden. Sie ist über die REST- und RPC-APIs sowie die Spanner-Clientbibliotheken verfügbar.
- Sie können in einem einzelnen gerichteten Lesevorgang maximal 10 Replikate angeben.
Hinweise
Beachten Sie Folgendes, bevor Sie gerichtete Lesevorgänge verwenden:
- Bei der Anwendung kann es zu zusätzlicher Latenz kommen, wenn Sie Lesevorgänge an ein Replikat oder eine Region weiterleiten, die nicht am nächsten an der Anwendung liegt.
- Sie können den Traffic basierend auf folgenden Kriterien weiterleiten:
- Name der Region (z. B.
us-central1
). - Replikattyp (mögliche Werte:
READ_ONLY
undREAD_WRITE
).
- Name der Region (z. B.
- Die Option für automatisches Failover bei gerichteten Lesevorgängen ist standardmäßig aktiviert. Wenn die Option für automatisches Failover aktiviert ist und alle angegebenen Replikate nicht verfügbar oder fehlerhaft sind, leitet Spanner Anfragen an ein Replikat außerhalb der
includeReplicas
-Liste weiter. 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 direkte Lesevorgänge
Wenn Sie die REST- oder RPC-API für gezielte Lesevorgänge verwenden, müssen Sie diese Felder im Parameter directedReadOptions
definieren. Sie können nur eine der beiden Optionen einfügen, entweder includeReplicas
oder excludeReplicas
, aber nicht beide.
includeReplicas
: Enthält eine wiederholte Gruppe vonreplicaSelections
. In dieser Liste wird die Reihenfolge angegeben, in der gerichtete Lesevorgänge für bestimmte Regionen oder Replikate berücksichtigt werden sollen. Sie können maximal 10includeReplicas
angeben.replicaSelections
: Besteht aus demlocation
oder dem Replikattype
, das die Anfrage für gerichtete Lesevorgänge verarbeitet. Wenn SieincludeReplicas
verwenden, müssen Sie mindestens eines der folgenden Felder angeben:location
: Der Standort, der die Anfrage für gerichtete Lesevorgänge bedient. Der Standort muss eine der Regionen in der Konfiguration mit zwei oder mehreren Regionen Ihrer Datenbank sein. Wenn der Speicherort nicht eine der Regionen in der Dual-Region- oder Multiregion-Konfiguration Ihrer Datenbank ist, werden Anfragen nicht wie erwartet weitergeleitet. Stattdessen werden sie von der nächstgelegenen Region bereitgestellt. Sie können beispielsweise Lesevorgänge an den Standortus-central1
in einer Datenbank in der multiregionalen Instanzkonfigurationnam6
weiterleiten.Sie können den Parameter
location
auch mit einemleader
- odernon-leader
-Stringliteral angeben. Wenn Sie den Wertleader
eingeben, leitet Spanner Ihre Anfragen an das Leader-Replikat der Datenbank weiter. Wenn Sie dennon-leader
-Wert eingeben, wird die Anfrage von Spanner im nächstgelegenen Nicht-Leader-Replikat ausgeführt.type
: Der Replikattyp, der die Anfrage für gerichtete Lesevorgänge verarbeitet. Mögliche Typen sindREAD_WRITE
undREAD_ONLY
.
autoFailoverDisabled
: Standardmäßig ist dies aufFalse
festgelegt, 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 ListeincludeReplicas
weiter. 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 sindTRUE
für deaktiviert undFALSE
für aktiviert.
excludeReplicas
: Enthält eine wiederholte Gruppe vonreplicaSelections
, die nicht für die Bearbeitung von Anfragen verwendet werden. Spanner leitet Anfragen nicht an Replikate in dieser Liste weiter.replicaSelections
: Der Standort oder Replikattyp, der nicht für die Bearbeitung der Anfrage für gerichtete Lesevorgänge verwendet wird. Wenn SieexcludeReplicas
verwenden, müssen Sie mindestens eines der folgenden Felder angeben:location
: Der Standort, der vom Bereitstellen der Anfrage für gerichtete Lesevorgänge ausgeschlossen ist.type
: Der Replikattyp, der nicht für die Bearbeitung der Anfrage für gerichtete Lesevorgänge verwendet wird. Mögliche Typen sindREAD_WRITE
undREAD_ONLY
.
Ein Beispiel für den Text einer REST-Anfrage finden Sie im Abschnitt Direkte Lesevorgänge verwenden auf dem Tab „REST“.
Gezielte Lesevorgänge verwenden
Sie können die Spanner-Clientbibliotheken sowie die REST- und RPC-APIs verwenden, um gezielte Lesevorgänge auszuführen.
Clientbibliotheken
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Sie können die folgenden REST APIs verwenden, um gezielte 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: die Datenbank-ID.
- SESSION-ID: die Sitzungs-ID.
Sie erhalten den
SESSION-ID
-Wert, 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 gezielte Lesevorgänge auszuführen:
Monitoring
Spanner bietet einen Latenzmesswert, mit dem Sie 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 bearbeitet wird. Das Feld /is_directed_read
gibt an, ob die Option für gezielte Lesevorgänge aktiviert ist.
Eine vollständige Liste der verfügbaren Messwerte finden Sie unter Liste der Messwerte für Spanner.