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.
Gängige Anwendungsfälle
Hier einige häufige Anwendungsfälle für gerichtete Lesevorgänge:
- Load-Balancing von Arbeitslasten über mehrere Regionen hinweg, um eine einheitlichere CPU-Auslastung.
- Isolieren von Analysen in Ihrer Anwendung durch Minimieren der Auswirkungen auf Transaktionen Arbeitsbelastungen.
- Bereitstellung einer teilweisen Isolierung für Lesevorgänge von Änderungsstreams. Wenn Sie zum Streamen die Spanner API verwenden Spanner-Datenänderungen helfen, die Auswirkungen auf Transaktionsarbeitslasten mithilfe von gerichteten Lesevorgängen erstellen.
Unterstützte Abfragevorgänge
Abfragevorgänge | Werden gerichtete Lesevorgänge unterstützt? |
---|---|
Veralteter Lesezugriff | Ja |
Aussagekräftiger Lesestoff | Ja |
Lese-Schreib-Transaktion | Nein |
Gezielte Lesevorgänge werden für Lese-Schreib-Transaktionen nicht unterstützt.
und partitionierte DML-Typen von Bulk-Aktualisierungen. Dieses
liegt daran, dass Lese-Schreib-Transaktionen
in der führenden 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 gerichtete Lesevorgänge nur in einer Spanner-Instanz verwenden, die in einer multiregionalen Instanzkonfiguration oder eine benutzerdefinierte regionale Konfiguration mit optionalen schreibgeschützten Regionen.
- Sie können gerichtete Lesevorgänge nicht mit Lese-/Schreibanfragen verwenden, da -Anfragen werden immer von der führenden Region bearbeitet.
- 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.
- Wenn Sie das Dashboard für Systemstatistiken verwenden oder im Metrics Explorer im Vorgänge pro Sekunde, Vorgänge pro Sekunde nach Datenbank und Vorgänge pro Sekunde nach API-Methodendiagrammen sehen Sie möglicherweise Ihre Anfrage für gerichtete Lesevorgänge an einem anderen Ort als dem von Ihnen angegebenen. In diesem Fall werden die Informationen Diagramme möglicherweise falsch sind. Sie können bestätigen, dass Ihre Leseanfragen werden mithilfe der CPU-Auslastungsmesswerte an die ausgewählten Regionen weitergeleitet. Diese Messwerte geben die genauesten Informationen dazu an, wohin die gerichteten Lesevorgänge führen. Traffic weitergeleitet wird.
Hinweise
Beachten Sie Folgendes, bevor Sie gerichtete Lesevorgänge verwenden:
- Die Anwendung kann zusätzliche Latenz verursachen, wenn Sie Lesevorgänge an einen Replikat oder einer anderen Region als derjenigen, die der Anwendung am nächsten ist.
- Sie können Traffic basierend auf folgenden Faktoren 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 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 automatische Failover-Option deaktivieren und alle die angegebenen Replikate nicht verfügbar oder fehlerhaft sind, werden die angegebenen Lesevorgänge schlägt fehl.
Parameter für gerichtete Lesevorgänge
Wenn Sie die REST API oder die RPC API für gerichtete Lesevorgänge verwenden, müssen Sie
für diese Felder im Parameter directedReadOptions
. 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 der Bereitstellunglocation
oder Replikattype
die Anfrage für gerichtete Lesevorgänge. 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 vom nächstgelegene Region Du kannst beispielsweise Lesevorgänge an den Standort weiterleitenus-central1
für eine Datenbank in der multiregionalen Instanzkonfigurationnam6
.type
: Der Replikattyp, der die Anfrage für gerichtete Lesevorgänge verarbeitet. Möglich Zu den Typen gehörenREAD_WRITE
undREAD_ONLY
.
autoFailoverDisabled
: Die Standardeinstellung istFalse
, was bedeutet, dass automatisch Failover ist aktiviert. Wenn der automatische Failover aktiviert ist und alle angegebene Replikate nicht verfügbar oder fehlerhaft sind, Spanner leitet Anfragen an ein Replikat außerhalb derincludeReplicas
-Liste weiter. Wenn Sie die automatische Failover-Option deaktivieren und alle angegebenen Replikate nicht verfügbar oder fehlerhaft ist, schlägt die Anfrage für gerichtete Lesevorgänge fehl. Mögliche WerteTRUE
für deaktivierte undFALSE
für aktivierte Elemente einschließen.
excludeReplicas
: enthält einen wiederholten Satz vonreplicaSelections
, die werden von der Bereitstellung von Anfragen ausgeschlossen. Spanner leitet keine Weiterleitungen an Replikate in dieser Liste.replicaSelections
: Der ausgeschlossene Standort oder Replikattyp. die Anfrage für gerichtete Lesevorgänge verarbeiten kann. Wenn SieexcludeReplicas
verwenden, müssen Sie mindestens eines der folgenden Felder angeben:location
: Der Standort, der von der Auslieferung ausgeschlossen ist. gerichtete Lesevorgänge.type
: Der Replikattyp, der von der Bereitstellung der gerichteten Anfrage ausgeschlossen ist read-Anfrage stellen. 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.
Gesteuerte Lesevorgänge 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 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: 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 verwenden, um gerichtete Lesevorgänge auszuführen: