Leasingvertrag lesen

Auf dieser Seite wird beschrieben und erläutert, wie Sie Spanner-Leseleases verwenden. Leseleases helfen Ihren Datenbanken, die Leselatenz in Nicht-Leader-Regionen für Transaktionen zu reduzieren, die eine starke Konsistenz erfordern.

Wenn Spanner standardmäßig eine Anfrage für einen starken Lesevorgang in einer Region empfängt, die nicht als Leader fungiert, kontaktiert das Replikat, das den Lesevorgang ausführt, die nicht schreibgeschützte Leader-Region der Instanz. Dieser Kontakt bestätigt, dass seine Daten aktuell sind, bevor die Anfrage bearbeitet wird. Bei diesem Vorgang ist ein Netzwerk-Roundtrip zwischen der Region, die die Anfrage empfängt, und der Leader-Region erforderlich. Im Gegensatz zur Kommunikation innerhalb einer einzelnen Region führt die geografische Entfernung zwischen Regionen zu einer zusätzlichen Latenz bei der Anfrage.

Durch die Verwendung von Spanner-Leseleases ist dieser Roundtrip nicht mehr erforderlich. Wenn Sie eine oder mehrere Regionen für Leseleases für Ihre Datenbank festlegen, gewährt Spanner das Recht, Lesevorgänge lokal in einer oder mehreren nicht führenden, nicht schreibgeschützten oder schreibgeschützten Regionen auszuführen. So können die Nicht-Leader-Regionen starke Lesevorgänge direkt ausführen, ohne mit der Leader-Region kommunizieren zu müssen. Wenn starke Lesevorgänge aus einer Nicht-Leader-Region bereitgestellt werden, die sich näher am Client befindet, wird die Latenz über Regionen hinweg reduziert. So wird die Latenz innerhalb der Region für starke Lesevorgänge in Dual- oder Multiregionen-Instanzen erreicht.

Das Aktivieren oder Deaktivieren der Funktion „Read Leases“ in einer Region erfordert keine Ausfallzeiten. Schreibvorgänge haben jedoch eine höhere Latenz, wenn Sie die Funktion verwenden, da der Leader beim Ausführen von Schreibvorgängen die Regionen für Leseleases kontaktieren muss. Als Nebeneffekt werden Sperren für Schreibvorgänge länger gehalten, was sich auf Schreibarbeitslasten mit hoher Konfliktwahrscheinlichkeit auswirken kann. Weitere Informationen finden Sie unter Leseleases verwenden. Read Lease eignet sich am besten für Anwendungen, bei denen eine höhere Schreiblatenz für schnellere, stark konsistente Lesevorgänge in Kauf genommen wird. Ein Beispiel ist ein Zugriffskontrollsystem, bei dem die Arbeitslast häufige Lesevorgänge, aber seltene Schreibvorgänge umfasst.

Informationen zum Aktivieren von Lese-Leases in einer Nicht-Leader-Region finden Sie unter Lese-Leases verwenden.

Wann sollten Lese-Leases verwendet werden?

Aktivieren Sie Leseleases, wenn Ihre Anwendung und Arbeitslast die folgenden Kriterien erfüllen:

  • Eine niedrige Latenz für starke Lesevorgänge ist wichtiger als eine niedrige Latenz für Schreibvorgänge.
  • Ihre Arbeitslast kann längere Schreibsperren tolerieren oder es gibt nur wenige Konflikte beim Schreiben.

Wenn Sie Leseleases aktivieren, erhöht sich die Schreiblatenz, wodurch Schreibsperren länger aufrechterhalten werden. Wenn Ihre Schreibarbeitslast bereits eine hohe Schreibkonkurrenz aufweist, kann diese Funktion die Schreiblatenz verschlechtern und den Durchsatz verringern.

Bei gleichzeitigen Schreibvorgängen wirkt sich die Wahl zwischen den Abfrage-APIs und den Lese-APIs auf die Leistung einer Datenbank aus, die Lese-Lease-Regionen verwendet.

Beim Ausführen von SQL-Anweisungen in Spanner werden Daten aus mehreren Zeilen oder Bereichen gelesen. Wenn Sie Abfrage-APIs mit aktivierten Lese-Leases verwenden, müssen Lesevorgänge zur Gewährleistung der Richtigkeit auf gleichzeitige Schreibvorgänge warten. Folglich kann es zu einer höheren Latenz kommen, insbesondere bei einer höheren Schreiblast. Lese-APIs sind in der Regel toleranter gegenüber gleichzeitigen Schreibvorgängen als Abfrage-APIs. Wenn Sie häufig Abfrage-APIs mit hoher Schreiblast verwenden, sollten Sie die Häufigkeit der Schreibvorgänge reduzieren oder stattdessen veraltete Lesevorgänge verwenden.

Lese-APIs sind für das Lesen bestimmter Zeilen oder Bereiche von Daten optimiert. Sie müssen nur auf Schreibvorgänge warten, die die Daten ändern, die sie lesen möchten. Wenn Sie Lese-APIs verwenden, werden Ihre Lesevorgänge nur durch Schreibvorgänge in genau denselben Datenbereichen blockiert. Wenn es also gleichzeitige Schreibvorgänge gibt und Sie Read-Lease-Regionen verwenden, sind starke Lesevorgänge in Spanner leistungsfähiger und haben eine geringere Latenz.

Weitere Informationen zur Monitoring-Latenz finden Sie unter Monitor.

Anwendungsbeispiel

Stellen Sie sich eine global bereitgestellte Anwendung vor, die Schreibvorgänge in den USA ausführt und Clients in den USA, Europa und Asien hat. Sie können eine multiregionale Spanner-Instanz wie nam-eur-asia1 mit einer führenden Region in us-central1 und schreibgeschützten Replikaten in europe-west1 und asia-east1 konfigurieren.

Wenn Sie die Leselease in den schreibgeschützten Regionen europe-west1 und asia-east1 aktivieren, führt Spanner starke Lesevorgänge aus Europa und Asien über diese lokalen Replikate aus, wodurch die Latenz reduziert wird. Dafür steigt die Latenz bei allen Schreibvorgängen. Die erhöhte Latenz entspricht der Round-Trip-Zeit zwischen der Leader-Region us-central1 und den am weitesten entfernten Regionen mit Leseleases.

Beschränkungen

Für Spanner-Leseleases gelten die folgenden Einschränkungen:

  • Sie können die Leselease nicht in einer Zeugenregion aktivieren.
  • Sie können keine Leseleases mit geografischer Partitionierung verwenden.
  • Lese-Leases verringern die Latenz nicht für Lesevorgänge, die Teil einer Lese-/Schreibtransaktion sind. Auch wenn eine Lese-Schreib-Transaktion nur Lesevorgänge enthält, werden diese Lesevorgänge weiterhin von der führenden Region ausgeführt.
  • Wenn Sie Ihre Instanz in eine andere Instanzkonfiguration verschieben, bleiben die Einstellungen für die Lese-Lease nicht erhalten. Sie müssen die Lese-Lease für die Datenbank nach Abschluss der Migration wieder aktivieren.

Leseleases verwenden

Sie müssen Lese-Leases aktivieren, bevor Sie sie verwenden können.

Zugriffssteuerung mit IAM

Zum Festlegen von Lese-Lease-Regionen benötigt ein Nutzer die IAM-Berechtigung spanner.databases.create oder spanner.databases.updateDdl. Die vordefinierte Rolle „Datenbankadministrator“ (roles/spanner.databaseAdmin) enthält diese Berechtigungen. Weitere Informationen finden Sie unter IAM-Übersicht für Spanner.

Informationen zum Gewähren von Berechtigungen finden Sie unter IAM-Berechtigungen anwenden.

Vorbereitung für PostgreSQL-Datenbanknutzer

Wenn Sie Read Lease in einer PostgreSQL-Datenbank verwenden möchten, nehmen Sie eine der folgenden Konfigurationsänderungen an Ihrer Datenbank vor. Andernfalls werden Ihre Lesevorgänge weiterhin von der Leader-Region bereitgestellt, auch wenn Sie Regionen für Leseleases festgelegt haben.

  • Wenn Sie nur schreibgeschützte Transaktionen verwenden, konfigurieren Sie Ihre PostgreSQL-Verbindung so, dass der Standardstatus jeder neuen Transaktion in der Datenbank auf „schreibgeschützt“ festgelegt ist. Setzen Sie dazu die Option default_transaction_read_only auf true.

    postgres://USER_ID:PASSWORD@localhost:5432/DATABASE_ID?sslmode=disable&options=-c \
      default_transaction_read_only=true
    host=/tmp port=5432 database=DATABASE_ID \
      options='-c default_transaction_read_only=true'
    

    Ersetzen Sie Folgendes:

    • USER_ID durch die eindeutige Kennung Ihres Nutzers.

    • PASSWORD durch Ihr Passwort.

    • DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

Lesevorgänge aktivieren

Wenn Sie beim Erstellen einer neuen Datenbank Leseleases aktivieren möchten, legen Sie die Option read_lease_regions in der DDL-Anweisung ALTER DATABASE (GoogleSQL, PostgreSQL) fest:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz aus, in der Sie die Lese-Lease aktivieren möchten.

  3. Klicken Sie auf der Seite Instanzübersicht, die sich öffnet, auf Datenbank erstellen.

  4. Geben Sie einen Namen für die Datenbank ein.

  5. Wählen Sie einen Datenbankdialekt aus.

  6. Klicken Sie auf Erstellen.

    In der Google Cloud Console wird die Seite Übersicht für die erstellte Datenbank angezeigt.

  7. Klicken Sie im Navigationsmenü auf Spanner Studio.

  8. Klicken Sie auf der Seite Spanner Studio auf  Neuer Tab oder verwenden Sie den leeren Editor-Tab.

  9. Geben Sie die folgende ALTER DATABASE-DDL-Anweisung ein.

    GoogleSQL

    ALTER DATABASE DATABASE_ID
    SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');
    

    Ersetzen Sie Folgendes:

    • DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

    • READ_LEASE_REGION durch die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Leselease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

    PostgreSQL

    ALTER DATABASE DATABASE_ID
    SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';
    

    Ersetzen Sie Folgendes:

    • DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

    • READ_LEASE_REGION durch die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Leselease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

  10. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie gcloud spanner databases create, um die Datenbankoption read_lease_regions beim Erstellen der Datenbank festzulegen.

GoogleSQL

gcloud spanner databases create DATABASE_ID \
  --instance=INSTANCE_ID \
  --ddl="ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die permanente Kennzeichnung Ihrer Spanner-Datenbank.
  • INSTANCE_ID: Die permanente Kennzeichnung Ihrer Spanner-Instanz.
  • READ_LEASE_REGION: Die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Lese-Lease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

PostgreSQL

gcloud spanner databases create DATABASE_ID \
  --instance=INSTANCE_ID \
  --ddl="ALTER DATABASE DATABASE_ID \
    SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die permanente Kennzeichnung Ihrer Spanner-Datenbank.
  • INSTANCE_ID: Die permanente Kennzeichnung Ihrer Spanner-Instanz.
  • READ_LEASE_REGION: Die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Lese-Lease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

Wenn Sie die Leselease beim Aktualisieren einer vorhandenen Datenbank aktivieren möchten, legen Sie die Option read_lease_regions in der ALTER DATABASE-DDL-Anweisung (GoogleSQL, PostgreSQL) fest:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz aus, in der Sie die Lese-Lease aktivieren möchten.

  3. Wählen Sie die Datenbank aus, in der Sie die Leselease aktivieren möchten.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab oder verwenden Sie den leeren Editor-Tab.

  6. Geben Sie die folgende ALTER DATABASE-DDL-Anweisung ein.

    GoogleSQL

    ALTER DATABASE DATABASE_ID \
    SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');
    

    Ersetzen Sie Folgendes:

    • DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

    • READ_LEASE_REGION durch die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Leselease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

    PostgreSQL

    ALTER DATABASE DATABASE_ID \
    SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';
    

    Ersetzen Sie Folgendes:

    • DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

    • READ_LEASE_REGION durch die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Leselease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

  7. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie gcloud spanner databases ddl update, um die Datenbankoption read_lease_regions festzulegen.

GoogleSQL

gcloud spanner databases ddl update DATABASE_ID \
  --instance=INSTANCE_ID \
  --ddl="ALTER DATABASE DATABASE_ID \
    SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die permanente Kennzeichnung Ihrer Spanner-Datenbank.
  • INSTANCE_ID: Die permanente Kennzeichnung Ihrer Spanner-Instanz.
  • READ_LEASE_REGION durch die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Leselease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

PostgreSQL

gcloud spanner databases ddl update DATABASE_ID \
  --instance=INSTANCE_ID \
  --ddl="ALTER DATABASE DATABASE_ID \
    SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die permanente Kennzeichnung Ihrer Spanner-Datenbank.
  • INSTANCE_ID: Die permanente Kennzeichnung Ihrer Spanner-Instanz.
  • READ_LEASE_REGION durch die Region, in der Sie die Leselease aktivieren möchten. Beispiel: europe-west1. Sie können die Leselease für mehrere Regionen aktivieren. Trennen Sie die einzelnen Regionen durch Kommas.

Lesevorgänge deaktivieren

Die Lese-Lease ist standardmäßig deaktiviert.

Wenn Sie die Funktion für eine vorhandene Datenbank aktualisieren und deaktivieren möchten, legen Sie die Option read_lease_regions in der DDL-Anweisung ALTER DATABASE (GoogleSQL, PostgreSQL) auf NULL fest:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz aus, in der Sie die Lese-Lease deaktivieren möchten.

  3. Wählen Sie die Datenbank aus, in der Sie die Leselease deaktivieren möchten.

  4. Klicken Sie im Navigationsmenü auf Spanner Studio.

  5. Klicken Sie auf der Seite Spanner Studio auf Neuer Tab oder verwenden Sie den leeren Editor-Tab.

  6. Geben Sie die folgende ALTER DATABASE-DDL-Anweisung ein.

    GoogleSQL

    ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = NULL);
    

    Ersetzen Sie DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

    PostgreSQL

    ALTER DATABASE DATABASE_ID SET "spanner.read_lease_regions" = NULL;
    

    Ersetzen Sie DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

  7. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie gcloud spanner databases ddl update, um die Datenbankoption read_lease_regions festzulegen.

GoogleSQL

gcloud spanner databases ddl update DATABASE_ID \
  --instance=INSTANCE_ID \
  --ddl="ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = NULL);"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die permanente Kennzeichnung Ihrer Spanner-Datenbank.
  • INSTANCE_ID: Die permanente Kennung Ihrer Spanner-Instanz.

PostgreSQL

gcloud spanner databases ddl update DATABASE_ID \
  --instance=INSTANCE_ID \
  --ddl="ALTER DATABASE DATABASE_ID SET "spanner.read_lease_regions" = NULL;"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die permanente Kennzeichnung Ihrer Spanner-Datenbank.
  • INSTANCE_ID: Die permanente Kennung Ihrer Spanner-Instanz.

Best Practices

Um die Vorteile dieser Funktion optimal zu nutzen, sollten Sie gemultiplexte Sitzungen verwenden. Damit können Sie eine große Anzahl gleichzeitiger Anfragen in einer einzigen Sitzung erstellen.

Überwachen

Nachdem Sie die Leselease aktiviert haben, sollten Sie die Latenz im Blick behalten, um zu prüfen, ob die Funktion den gewünschten Effekt erzielt. Ermitteln Sie dazu die Leader-Region und die Regionen, in denen die Leselease aktiviert ist, indem Sie die Informationsschematabelle data_options (GoogleSQL, PostgreSQL) oder Ihre Datenbank abfragen. In Regionen, in denen die Leselease aktiviert ist, wird erwartet, dass starke Lesevorgänge eine Latenz innerhalb der Region haben. Gleichzeitig steigt die Schreiblatenz zwischen der Leader-Region und der am weitesten entfernten Region mit aktivierter Leselease.

Mit dem folgenden Spanner-Latenzmesswert können Sie die Latenz von Leseanfragen in Ihren Instanzen überwachen:

  • spanner.googleapis.com/api/read_request_latencies_by_serving_location

Sie können diesen Messwert mit dem Feld /serving_location filtern. Das Feld /serving location gibt den Standort des Spanner-Servers an, von dem die Anfrage verarbeitet wird.

Eine vollständige Liste der verfügbaren Messwerte finden Sie unter Liste der Messwerte für Spanner.

Kostengesichtspunkte

Für starke Lesevorgänge, die aus Regionen mit aktivierter Funktion für Leseleases bereitgestellt werden, sind etwas weniger Rechenressourcen erforderlich. Schreibvorgänge für Datenbanken, für die die Funktion „Read Lease“ aktiviert ist, benötigen dagegen etwas mehr Rechenressourcen. Weitere Informationen finden Sie unter Preise für Spanner-Rechenkapazität.

Die Funktion hat keine Auswirkungen auf andere Preiskomponenten wie Speicher und Netzwerk.

Nächste Schritte