Auf dieser Seite werden von Spanner gesteuerte Lesevorgänge und ihre Verwendung beschrieben.
Mit gerichteten Lesevorgängen in Spanner können schreibgeschützte Transaktionen und einzelne Lesevorgänge auf eine bestimmte Replikattyp oder -region innerhalb einer multiregionalen Instanzkonfiguration oder einer benutzerdefinierten regionale Konfiguration mit optionalen schreibgeschützten Regionen.
Vorteile
Lesebücher bieten folgende Vorteile:
- Das Load-Balancing von Arbeitslasten über mehrere Regionen hinweg, eine gleichmäßigere CPU-Auslastung zu erzielen und Spanner-Instanzen.
- Aktivieren Sie die Arbeitslastisolierung. Sie können Ihre Analysearbeitslasten und Lesungen von Änderungsstreams 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 |
Starke Lesevorgänge | Ja |
Lese-Schreib-Transaktion | Nein |
Gezielte Lesevorgänge werden für Lese-Schreib-Transaktionen nicht unterstützt.
und partitionierte DML-Typen von Bulk-Aktualisierungen. Das liegt daran, dass Lese-Schreib-Transaktionen in der Leader-Region verarbeitet werden müssen. Wenn
gerichtete Lesevorgänge in einer Lese-Schreib-Transaktion verwendet werden, schlägt die Transaktion mit
einen BAD_REQUEST
-Fehler.
Beschränkungen
Für Spanner-gerichtete Lesevorgänge gelten die folgenden Einschränkungen:
- Sie können gezielte Lesevorgänge nur in einer Spanner-Instanz verwenden, die sich in einer multiregionalen Instanzkonfiguration oder einer benutzerdefinierten regionalen Konfiguration mit optionalen schreibgeschützten Regionen befindet.
- Sie können keine gezielten Lesevorgänge mit Lese-Schreib-Anfragen verwenden, da Schreibanfragen immer von der führenden Region ausgeführt werden.
- In der Google Cloud Console oder der Google Cloud CLI können keine gerichteten Lesevorgänge verwendet werden. Es ist verfügbar mit REST und RPC APIs und Spanner Clientbibliotheken.
- Sie können in einem einzelnen gerichteten Lesevorgang maximal 10 Replikate angeben.
Hinweis
Beachten Sie Folgendes, bevor Sie gezielte Lesevorgänge verwenden:
- Die Anwendung kann eine zusätzliche Latenz aufweisen, wenn Lesevorgänge an ein anderes Replika oder eine andere Region als diejenige weitergeleitet werden, die der Anwendung am nächsten ist.
- Sie können den Traffic basierend auf folgenden Kriterien weiterleiten:
- Name der Region (z. B.
us-central1
). - Replikationstyp (mögliche Werte:
READ_ONLY
undREAD_WRITE
).
- Name der Region (z. B.
- Die Option für automatisches Failover in gerichteten Lesevorgängen ist standardmäßig aktiviert. Wenn automatisch
Failover-Option ist aktiviert und alle angegebenen Replikate sind nicht verfügbar
oder fehlerhaft ist, leitet Spanner Anfragen an ein Replikat außerhalb der
Liste „
includeReplicas
“. Wenn Sie die Option für das automatische Failover deaktivieren und alle angegebenen Replikate nicht verfügbar oder nicht fehlerfrei sind, schlägt die Anfrage für die gezielten Lesevorgänge fehl.
Parameter für gerichtete 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 folgenden Optionen einfügen:
includeReplicas
oder excludeReplicas
, nicht beides.
includeReplicas
: enthält einen wiederholten Satz vonreplicaSelections
. Diese Liste gibt die Reihenfolge an, in der Lesevorgänge an bestimmte Regionen oder Replikate weitergeleitet wurden zu berücksichtigen sind. Sie können maximal 10includeReplicas
angeben.replicaSelections
: Besteht aus demlocation
oder dem Replikattype
, das die Anfrage für die gezielten Lesevorgänge ausführt. Wenn SieincludeReplicas
müssen Sie mindestens eines der folgenden Felder ausfüllen:location
: Der Standort, von dem die Anfrage für gerichtete Lesevorgänge verarbeitet wird. Die Standort muss eine der Regionen innerhalb des multiregionalen Standorts sein Konfiguration Ihrer Datenbank. Wenn der Standort nicht zu den Regionen innerhalb der multiregionalen Konfiguration Ihrer Datenbank, -Anfragen nicht wie erwartet weitergeleitet. Stattdessen werden sie von der nächstgelegenen Region bereitgestellt. Du kannst beispielsweise Lesevorgänge an den Standort weiterleitenus-central1
für eine Datenbank in der multiregionalen Instanzkonfigurationnam6
.Sie können den
location
-Parameter auch mit einemleader
- oder String-Literalnon-leader
. Wenn Sie den Wertleader
eingeben, Spanner leitet Ihre Anfragen an die Leader-Replikat. Umgekehrt Wenn Sie den Wertnon-leader
eingeben, erfüllt Spanner die Anfrage im nächsten Nicht-Leader-Replikat.type
: Der Replikattyp, der die Anfrage für gerichtete Lesevorgänge verarbeitet. Mögliche Typen sindREAD_WRITE
undREAD_ONLY
.
autoFailoverDisabled
: Die Standardeinstellung istFalse
, was bedeutet, dass automatisch Failover ist aktiviert. Wenn die Option für das automatische Failover aktiviert ist und alle angegebenen Replikate nicht verfügbar oder nicht fehlerfrei sind, leitet Spanner Anfragen an ein Replik außerhalb der ListeincludeReplicas
weiter. Wenn Sie die Option für das automatische Failover deaktivieren und alle angegebenen Replikate nicht verfügbar oder nicht fehlerfrei sind, schlägt die Anfrage für die gezielten Lesevorgänge fehl. Mögliche Werte sindTRUE
für deaktiviert undFALSE
für aktiviert.
excludeReplicas
: Enthält eine wiederholte Reihe vonreplicaSelections
, die vom Ausliefern von Anfragen ausgeschlossen ist. Spanner leitet keine Weiterleitungen an Replikate in dieser Liste.replicaSelections
: Der Standort oder Replikatyp, der vom Ausführen der Anfrage für die gezielte Lesevorgänge ausgeschlossen ist. Wenn SieexcludeReplicas
verwenden, müssen Sie mindestens eines der folgenden Felder angeben: <ph type="x-smartling-placeholder">- </ph>
location
: Der Standort, der vom Ausliefern der Anfrage für die gezielte Leseanfrage ausgeschlossen ist.type
: Der Replikatyp, der vom Ausführen der Anfrage für die gezielte Lesevorgänge ausgeschlossen ist. Mögliche Typen sindREAD_WRITE
undREAD_ONLY
.
Um ein Beispiel für den Text eines REST-Anfragetexts zu sehen, klicken Sie auf den REST im Abschnitt Directed Reads.
Vorlesen mit Anleitung verwenden
Mit den Spanner-Clientbibliotheken sowie der REST API und der RPC API können Sie gerichtete Lesevorgänge durchfü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 mit executeSQL
gezielte Lesevorgänge in us-central1
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 Wert
SESSION-ID
, 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 für gezielte Lesevorgänge verwenden:
Monitoring
Spanner bietet einen Latenzmesswert, mit dem Sie gerichtete Aktivitäten in Ihren Instanzen liest. Der Messwert ist verfügbar in Cloud Monitoring:
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Sie können diesen Messwert mithilfe der Felder /serving_location
oder /is_directed_read
filtern. Das Feld /serving location
gibt den Standort an.
des Spanner-Servers, von dem die Anfrage bereitgestellt wird. Die
Das Feld /is_directed_read
gibt an, ob die Option für gerichtete Lesevorgänge
aktiviert.
Eine vollständige Liste der verfügbaren Messwerte finden Sie unter Liste der Messwerte für Spanner.