Auf der Seite werden gerichtete Lesevorgänge in Spanner und ihre Verwendung beschrieben.
Mithilfe von gerichteten Lesevorgängen in Spanner können schreibgeschützte Transaktionen und einzelne Lesevorgänge an einen bestimmten Replikatyp oder eine bestimmte Region innerhalb einer multiregionalen Instanzkonfiguration oder einer benutzerdefinierten regionalen Konfiguration mit optionalen schreibgeschützten Regionen weitergeleitet werden.
Vorteile
Directed Reads bieten folgende Vorteile:
- Sie haben mehr Kontrolle über das Load Balancing von Arbeitslasten über mehrere Regionen hinweg, um eine gleichmäßigere CPU-Auslastung zu erzielen und eine Überprovisionierung von Spanner-Instanzen zu vermeiden.
- Aktivieren Sie die Arbeitslastisolation. 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 |
Direkte Lesevorgänge werden für Lese-/Schreibtransaktionen und partitionierte DML-Arten von Bulk-Aktualisierungen nicht unterstützt. Das liegt daran, dass Lese-Schreib-Transaktionen in der Leader-Region verarbeitet werden müssen. Wenn in einer Lese-Schreib-Transaktion gezielte Lesevorgänge verwendet werden, schlägt die Transaktion mit einem BAD_REQUEST
-Fehler fehl.
Beschränkungen
Für von Spanner geleitete 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 Sie keine gezielten Lesevorgänge verwenden. Sie ist über die REST- und RPC-APIs sowie die Spanner-Clientbibliotheken verfügbar.
- Sie können in einer einzelnen gerichteten Leseoperation 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 das automatische Failover bei gezielten Lesevorgängen ist standardmäßig aktiviert. Wenn die Option „Automatisches Failover“ aktiviert ist und alle angegebenen Repliken nicht verfügbar oder nicht fehlerfrei sind, leitet Spanner Anfragen an ein Replikat außerhalb der Liste
includeReplicas
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.
Parameter für gezielte 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 angeben, entweder includeReplicas
oder excludeReplicas
, aber nicht beide.
includeReplicas
: Enthält eine wiederholte Reihe vonreplicaSelections
. Diese Liste gibt die Reihenfolge an, in der gerichtete Lesevorgänge auf bestimmte Regionen oder Replikatypen berücksichtigt werden sollten. Sie können maximal 10includeReplicas
angeben.replicaSelections
: Besteht aus demlocation
oder dem Replikattype
, das die Anfrage für die gezielten Lesevorgänge beantwortet. Wenn SieincludeReplicas
verwenden, müssen Sie mindestens eines der folgenden Felder angeben:location
: Der Standort, an dem die Anfrage für die gezielten Lesevorgänge gesendet wird. Der Standort muss eine der Regionen in der multiregionalen Konfiguration Ihrer Datenbank sein. Wenn sich der Standort nicht in einer der Regionen innerhalb der multiregionalen Konfiguration Ihrer Datenbank befindet, werden Anfragen nicht wie erwartet weitergeleitet. Stattdessen werden sie von der nächstgelegenen Region bereitgestellt. Sie können Lesevorgänge beispielsweise an den Speicherortus-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 die Leiterreplik der Datenbank weiter. Wenn Sie dagegen den Wert fürnon-leader
eingeben, erfüllt Spanner die Anfrage im nächsten Replikat, das kein Leader ist.type
: Der Replikatyp, der die Anfrage für die gezielte Lesevorgänge ausführt. 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 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 Anfragen nicht an Repliken in dieser Liste weiter.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: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
.
Ein Beispiel für den Inhalt einer REST-Anfrage finden Sie im Abschnitt Direkte Lesevorgänge verwenden auf dem Tab „REST“.
Vorlesen mit Anleitung verwenden
Sie können die Spanner-Clientbibliotheken sowie die REST- und RPC APIs verwenden, um gezielte Lesevorgänge auszuführen.
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.
Sie können die folgenden RPC APIs für gezielte Lesevorgänge verwenden:
Monitoring
Spanner bietet einen Latenzmesswert, mit dem Sie Aktivitäten für gezielte 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 mithilfe der Felder /serving_location
oder /is_directed_read
filtern. Das Feld /serving location
gibt den Standort des Spanner-Servers an, von dem die Anfrage gesendet 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.