Leasingvertrag lesen

Auf dieser Seite wird beschrieben, wie Sie Spanner-Leseleases verwenden. Leseleases helfen Ihren Datenbanken und Platzierungen, die Latenz für starke Lesevorgänge in Lese-/Schreib- oder schreibgeschützten Regionen zu reduzieren. Dies geht jedoch mit einer höheren Schreiblatenz einher.

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 führenden 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 oder Platzierung festlegen, erhalten diese Regionen das Recht, konsistente Lesevorgänge lokal auszuführen. So können die Nicht-Leader-Regionen starke Lesevorgänge direkt ausführen, ohne mit der führenden Region kommunizieren zu müssen. Wenn starke Lesevorgänge aus einer Region ohne Leader ausgeführt werden, die näher am Client liegt, wird die Latenz über Regionen hinweg verringert. So wird die Latenz innerhalb der Region für starke Lesevorgänge in dual- oder multiregionalen Instanzen erreicht. Wenn Lese-Leases aktiviert sind, werden starke Lesevorgänge in schreibgeschützten Transaktionen lokal ausgeführt, ohne dass der Leader kontaktiert wird. Bei Lese-Schreib-Transaktionen werden Lesevorgänge weiterhin an die führende Region weitergeleitet, es sei denn, Sie verwenden die Isolation vom Typ „Repeatable Read“ mit deaktiviertem Leader-fähigen Routing.

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, um Leseleases zu aktivieren. Als Nebeneffekt werden Sperren für Schreibvorgänge länger gehalten, was sich auf Schreibarbeitslasten mit hoher Konfliktdichte auswirken kann. Weitere Informationen finden Sie unter Leseleases verwenden. Read Lease eignet sich am besten für Anwendungen, bei denen eine höhere Schreiblatenz in Kauf genommen wird, um schnellere, stark konsistente Lesevorgänge zu ermöglichen. Ein Beispiel ist ein Zugriffssteuerungssystem, bei dem die Arbeitslast häufige Lese-, aber seltene Schreibvorgänge umfasst.

Informationen zum Aktivieren von Leseleases finden Sie unter Leseleases verwenden.

Wann sollten Leseleases 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 hat nur geringe Schreibkonflikte.

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.

Weitere Informationen zur Monitoring-Latenz finden Sie unter Monitoring.

Anwendungsbeispiel

Stellen Sie sich eine weltweit 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:

  • Lese-Leases verringern die Latenz nicht für Lesevorgänge, die Teil einer Lese-/Schreibtransaktion sind. Wenn Sie die Latenz innerhalb der Region für Lesevorgänge in Lese-Schreib-Transaktionen erreichen möchten, müssen Sie die Isolationsstufe „Wiederholbarer Lesevorgang“ verwenden und Leader-fähiges Routing deaktivieren, um Lese-Leases zu verwenden. Auch wenn die Isolation „Wiederholbares Lesen“ verwendet wird, können Lesevorgänge in Lese-Schreib-Transaktionen weiterhin an die führende Region weitergeleitet werden, insbesondere nachdem ein Schreibvorgang innerhalb der Transaktion erfolgt ist, um die Konsistenz „Lesen nach Schreiben“ zu gewährleisten.
  • 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 Verschiebung wieder aktivieren.
  • Sie können die Region für Lese-Leases für eine vorhandene Platzierung nicht deaktivieren oder ändern. Diese Einschränkung kann sich mit der GA-Version von geografischer Partitionierung oder danach ändern oder entfernt werden. Wenn Sie die Leselease in einem vorhandenen Placement deaktivieren möchten, gehen Sie so vor:
    • Erstellen Sie einen neuen Placement, ohne die Option für die Leselease anzugeben, oder mit einer anderen Region für die Leselease, die Sie verwenden möchten.
    • Verwenden Sie partitionierte DML, um die Platzierung Ihrer Daten auf die neue Platzierung zu aktualisieren. Durch dieses Update wird ein Hintergrundprozess zum Verschieben der Daten gestartet. Spanner kann ungefähr 10 Platzierungszeilen pro Sekunde für jeden Knoten in der Partition Ihrer Zielinstanz verschieben. Die CPU-Auslastung kann in diesem Zeitraum aufgrund der Migration beeinträchtigt sein.
    • Löschen Sie die ursprüngliche Platzierung nach Abschluss der Datenübertragung.

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 führenden 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 mit Ihrem Passwort.

    • DATABASE_ID durch die eindeutige Kennung Ihrer Datenbank.

  • Wenn Sie eine Latenz für Lesezugriffe innerhalb von Lese-/Schreibtransaktionen in einer Region erreichen möchten oder Ihre Verbindungsoption nicht immer wechseln können, verwenden Sie die Isolationsebene für wiederholbare Lesevorgänge und deaktivieren Sie Leader-fähiges Routing. Diese Einstellungen sind auch dann erforderlich, wenn Ihre Lese-/Schreibtransaktion nur Lesevorgänge enthält. Andernfalls werden die Lesevorgänge in Lese-Schreib-Transaktionen immer an die führende Region weitergeleitet. In einer solchen Transaktion wird die Leselease deaktiviert, nachdem die erste DML-Anweisung für Schreibvorgänge ausgeführt wurde. Das liegt daran, dass Schreibvorgänge immer an die führende Region gerichtet werden. Daher müssen nachfolgende Lesevorgänge auch an die führende Region gesendet werden, um den Schreibvorgang zu lesen.

    postgres://USER_ID:PASSWORD@localhost:5432/DATABASE_ID?sslmode=disable&options=-c \
      default_isolation_level=REPEATABLE_READ -c routeToLeader=false
    host=/tmp port=5432 database=DATABASE_ID \
      options='-c default_isolation_level=REPEATABLE_READ -c routeToLeader=false'
    

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