Auf dieser Seite werden Spanner-Batchschreibanfragen beschrieben und wie Sie diese verwenden können um Ihre Spanner-Daten zu ändern.
Sie können Spanner-Batchschreibvorgänge zum Einfügen, Aktualisieren oder Löschen verwenden in Ihren Spanner-Tabellen arbeiten. Spanner Batch-Schreibvorgänge unterstützen Schreibvorgänge mit niedriger Latenz ohne Lesevorgang und geben Mutationen in Batches angewendet werden. Für Batchschreibvorgänge gruppieren Sie verwandten Mutationen zusammengehören und alle Mutationen in einer Gruppe ein Commit durchgeführt werden in kleinstmöglichen Schritten. Die gruppenübergreifenden Mutationen werden in einer nicht angegebenen Reihenfolge angewendet und sind unabhängig voneinander (nicht atomar). Cloud Spanner benötigt keine warten, bis alle Mutationen angewendet wurden, bevor eine Antwort gesendet wird. dass der Batch-Schreibvorgang teilweise fehlgeschlagene Vorgänge ermöglicht. Sie können auch mehrere Batch- schreibt. Weitere Informationen finden Sie unter Batch-Schreibvorgang verwenden.
Anwendungsfälle
Spanner-Batchschreibvorgang ist besonders nützlich, wenn Sie einen Commit für eine eine große Anzahl von Schreibvorgängen ohne Lesevorgang, die aber keinen atomaren Transaktion für alle Mutationen.
Wenn Sie Ihre DML-Anfragen in Batches zusammenfassen möchten, verwenden Sie Batch-DML. , um Ihre Spanner-Daten zu ändern. Weitere Informationen zur Unterschiede zwischen DML und Mutationen finden Sie unter Vergleich von DML und Mutationen.
Für Anfragen mit einer einzelnen Mutation empfehlen wir die Verwendung einer gesperrten Lese-/Schreibberechtigung Transaktion
Beschränkungen
Für Spanner-Batchschreibvorgänge gelten die folgenden Einschränkungen:
Spanner-Batchschreibvorgang ist nicht mit der Methode Google Cloud Console oder Google Cloud CLI. Es ist nur mit REST und RPC verfügbar APIs und die Spanner-Java-Clientbibliothek
Wiederholungsschutz wird beim Batchschreibvorgang nicht unterstützt. Es ist möglich, dass Mutationen und eine Mutation, die mehr als einmal angewendet wird, zu einem Fehler führen. Wenn beispielsweise eine Insert-Mutation wiederholt wird, Fehler, der bereits vorhanden ist, oder wenn Sie generierte oder zeitstempelbasierten Schlüsseln in der Mutation hat, kann das dazu führen, der Tabelle hinzugefügt wurden. Wir empfehlen, Ihre Schreibvorgänge so zu strukturieren, dass sie idempotent für um dieses Problem zu vermeiden.
Für eine abgeschlossene Batchschreibanfrage kann kein Rollback durchgeführt werden. Sie können in Bearbeitung befindliche Batch-Schreibanfrage. Wenn Sie einen laufenden Batchschreibvorgang abbrechen, für Mutationen in nicht abgeschlossenen Gruppen wird ein Rollback durchgeführt. Mutationen in abgeschlossenen Gruppen an die Datenbank übergeben werden.
Die maximale Größe für eine Batch-Schreibanfrage entspricht Commit-Anfrage ausführen. Weitere Informationen finden Sie unter Limits für das Erstellen, Lesen, Aktualisieren und Löschen von Daten
Batch-Schreibvorgänge verwenden
Für Batchschreibvorgänge benötigen Sie die Berechtigung spanner.databases.write
für
der Datenbank, die Sie ändern möchten. Sie können Mutationen im Batch schreiben
nicht in einem einzigen Aufruf mit einer REST atomar
oder RPC API
Anruf anfordern.
Sie sollten die folgenden Mutationstypen bei der Verwendung von Batchschreibvorgängen gruppieren:
- Zeilen mit demselben Primärschlüsselpräfix in der übergeordneten und der untergeordneten Datei einfügen Tabellen.
- Zeilen mit einer Fremdschlüsselbeziehung zwischen den Tabellen in Tabellen einfügen.
- Andere Arten verwandter Mutationen, abhängig von Ihrem Datenbankschema und Anwendungslogik.
Sie können mit der Java-Clientbibliothek von Spanner auch Batchschreibvorgänge ausführen.
Im folgenden Codebeispiel wird die Tabelle Singers
mit neuen Zeilen aktualisiert.
Java
Nächste Schritte
- Weitere Informationen zu Spanner-Transaktionen.