Auf dieser Seite werden Spanner-Batch-Schreibanfragen beschrieben und es wird erläutert, wie Sie damit Ihre Spanner-Daten ändern können.
Mit Spanner-Batch-Schreibvorgängen können Sie mehrere Zeilen in Ihre Spanner-Tabellen einfügen, aktualisieren oder löschen. Spanner-Batch-Schreibvorgänge unterstützen Schreibvorgänge mit niedriger Latenz ohne Lesevorgang und geben Antworten zurück, wenn Mutationen in Batches angewendet werden. Wenn Sie Batch-Schreibvorgänge verwenden möchten, gruppieren Sie zusammengehörige Mutationen. Alle Mutationen in einer Gruppe werden dann atomar ausgeführt. Die Mutationen in den Gruppen werden in einer nicht angegebenen Reihenfolge angewendet und sind voneinander unabhängig (nicht atomar). Spanner muss nicht warten, bis alle Mutationen angewendet wurden, bevor eine Antwort gesendet wird. Das bedeutet, dass bei Batch-Schreibvorgängen ein teilweiser Fehler möglich ist. Sie können auch mehrere Batch-Schreibvorgänge gleichzeitig ausführen. Weitere Informationen finden Sie unter Batch-Schreibvorgänge verwenden.
Anwendungsfälle
Das Batch-Schreiben in Spanner ist besonders nützlich, wenn Sie eine große Anzahl von Schreibvorgängen ohne Lesevorgang ausführen möchten, aber keine atomare Transaktion für alle Mutationen benötigen.
Wenn Sie Ihre DML-Anfragen in Batches zusammenfassen möchten, verwenden Sie Batch-DML, um Ihre Spanner-Daten zu ändern. Weitere Informationen zu den Unterschieden zwischen DML und Mutationen finden Sie unter DML und Mutationen vergleichen.
Für einzelne Mutationsanfragen empfehlen wir die Verwendung einer Lese-/Schreibtransaktion mit Sperrung.
Beschränkungen
Für Spanner-Batch-Schreibvorgänge gelten die folgenden Einschränkungen:
Der Spanner-Batch-Schreibvorgang ist nicht über dieGoogle Cloud -Konsole oder die Google Cloud CLI verfügbar. Sie ist nur über REST- und RPC-APIs und die Spanner-Clientbibliotheken verfügbar.
Wiederholungsschutz wird bei Batch-Schreibvorgängen nicht unterstützt. Es ist möglich, dass Mutationen mehr als einmal angewendet werden. Eine Mutation, die mehr als einmal angewendet wird, kann zu einem Fehler führen. Wenn beispielsweise eine Einfügemutation wiedergegeben wird, kann dies zu einem Fehler vom Typ „Bereits vorhanden“ führen. Wenn Sie generierte oder auf Commit-Zeitstempeln basierende Schlüssel in der Mutation verwenden, kann dies dazu führen, dass der Tabelle zusätzliche Zeilen hinzugefügt werden. Wir empfehlen, Ihre Schreibvorgänge so zu strukturieren, dass sie idempotent sind, um dieses Problem zu vermeiden.
Eine abgeschlossene Batchschreibanfrage kann nicht rückgängig gemacht werden. Sie können eine laufende Batchschreibanfrage abbrechen. Wenn Sie einen laufenden Batch-Schreibvorgang abbrechen, werden Mutationen in nicht abgeschlossenen Gruppen zurückgesetzt. Mutationen in abgeschlossenen Gruppen werden in der Datenbank gespeichert.
Die maximale Größe für eine Batch-Schreibanfrage entspricht dem Limit für eine Commit-Anfrage. Weitere Informationen finden Sie unter Limits beim Erstellen, Lesen, Aktualisieren und Löschen von Daten.
Batchschreibvorgänge verwenden
Wenn Sie Batch-Schreibvorgänge verwenden möchten, benötigen Sie die Berechtigung spanner.databases.write
für die Datenbank, die Sie ändern möchten. Sie können Mutationen in einem einzelnen Aufruf nicht atomar im Batch schreiben, indem Sie einen REST- oder RPC API-Anfrageaufruf verwenden.
Die folgenden Mutationstypen sollten bei der Verwendung von Batch-Schreibvorgängen gruppiert werden:
- Einfügen von Zeilen mit demselben Primärschlüsselpräfix in die übergeordnete und die untergeordnete Tabelle.
- Einfügen von Zeilen in Tabellen mit einer Fremdschlüsselbeziehung zwischen den Tabellen.
- Andere Arten von zugehörigen Mutationen, die von Ihrem Datenbankschema und Ihrer Anwendungslogik abhängen.
Sie können auch Batch-Schreibvorgänge mit den Spanner-Clientbibliotheken ausführen.
Im folgenden Codebeispiel wird die Tabelle Singers
mit neuen Zeilen aktualisiert.
Clientbibliotheken
Java
Go
Knoten
Python
C++