Verwalten gleichzeitiger Schreiboperationen - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Verwalten gleichzeitiger Schreiboperationen

Einige Anwendungen erfordern nicht nur gleichzeitiges Abfragen und Laden, sondern auch die Fähigkeit, gleichzeitig zu mehreren Tabellen oder zur selben Tabelle zu schreiben. In diesem Zusammenhang bedeutet gleichzeitig überlappend, nicht die Ausführung zu exakt demselben Zeitpunkt. Zwei Transaktionen werden als gleichzeitig betrachtet, wenn die zweite Transaktion gestartet wird, bevor für die erste Transaktion ein Commit ausgeführt wird. Gleichzeitige Operationen können ihren Ursprung in verschiedenen Sitzungen haben, die vom selben Benutzer oder von verschiedenen Benutzern gesteuert werden.

Amazon Redshift unterstützt diese Arten von Anwendungen, da Tabellen gelesen werden können, während sie inkrementell geladen oder geändert werden. Abfragen steht einfach die letzte übergegebene Version bzw. der letzte Snapshot der Daten bereit. Sie müssen nicht darauf warten, dass für die nächste Version ein Commit ausgeführt wird. Wenn Sie möchten, dass eine bestimmte Abfrage auf einen Commit aus einer anderen Schreiboperation wartet, müssen Sie dies entsprechend planen.

Anmerkung

Amazon Redshift unterstützt standardmäßig automatische Commits, bei denen für jeden getrennt ausgeführten SQL-Befehl ein einzelnes Commit ausgeführt wird. Wenn Sie in einem Transaktionsblock einen Satz von Befehlen einschließen (definiert durch die Anweisungen BEGIN und END), wird der Block als eine einzige Transaktion übergeben, sodass Sie ein Rollback für ihn ausführen können, wenn notwendig. Ausnahmen von diesem Verhalten sind die Befehle TRUNCATE und VACUUM, die automatische alle ausstehenden Änderungen, die in der aktuellen Transaktion vorgenommen wurden, übergeben.

Einige SQL-Clients geben automatisch BEGIN- und COMMIT-Befehle aus, sodass der Client steuert, ob eine Gruppe von Anweisungen als Transaktion oder jede einzelne Anweisung als eigene Transaktion ausgeführt wird. Konsultieren Sie die Dokumentation zu der von Ihnen verwendeten Schnittstelle. Wenn Sie zum Beispiel den JDBC-Treiber von Amazon Redshift verwenden, führt ein JDBC PreparedStatement mit einer Abfragezeichenfolge, die mehrere (durch Semikolon getrennte) SQL-Befehle enthält, alle Anweisungen als eine einzige Transaktion aus. Wenn Sie dagegen SQL Workbench/J verwenden und AUTO COMMIT ON festlegen, wird beim Ausführen mehrer Anweisungen jede Anweisung als eigene Transaktion ausgeführt.

In den folgenden Themen werden einige der wesentlichen Konzepte und Anwendungsfälle beschrieben, die Transaktionen, Datenbank-Snapshots, Updates und Gleichzeitigkeitsverhalten umfassen.