Beispiele für gleichzeitige Schreibvorgänge - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für gleichzeitige Schreibvorgänge

In den folgenden Pseudocode-Beispielen wird gezeigt, wie Transaktionen entweder fortgesetzt werden oder warten, wenn sie gleichzeitig ausgeführt werden.

Gleichzeitige COPY Operationen in derselben Tabelle

Transaktion 1 kopiert Zeilen in die LISTING Tabelle:

begin; copy listing from ...; end;

Transaktion 2 startet gleichzeitig in einer separaten Sitzung und versucht, mehr Zeilen in die LISTING Tabelle zu kopieren. Transaktion 2 muss warten, bis Transaktion 1 die Schreibsperre für die LISTING Tabelle aufhebt, dann kann sie fortfahren.

begin; [waits] copy listing from ; end;

Das gleiche Verhalten würde auftreten, wenn eine oder beide Transaktionen statt eines INSERT Befehls einen Befehl enthielten. COPY

Gleichzeitige DELETE Operationen aus derselben Tabelle

Transaktion 1 löscht Zeilen aus einer Tabelle:

begin; delete from listing where ...; end;

Transaktion 2 wird gleichzeitig gestartet und versucht, in derselben Tabelle Zeilen zu löschen. Die Transaktion ist erfolgreich, da sie auf den Abschluss von Transaktion 1 wartet, bevor sie versucht, Zeilen zu löschen.

begin [waits] delete from listing where ; end;

Das gleiche Verhalten würde auftreten, wenn eine oder beide Transaktionen statt eines UPDATE Befehls einen Befehl für dieselbe Tabelle enthielten. DELETE

Gleichzeitige Transaktionen mit einer Mischung aus Lese- und Schreiboperationen

In diesem Beispiel löscht Transaktion 1 Zeilen aus der USERS Tabelle, lädt die Tabelle neu, führt eine COUNT (*) -Abfrage aus und führt dann, vor dem FestschreibenANALYZE, Folgendes aus:

begin; delete one row from USERS table; copy ; select count(*) from users; analyze ; end;

In der Zwischenzeit wird Transaktion 2 gestartet. Diese Transaktion versucht, zusätzliche Zeilen in die USERS Tabelle zu kopieren, die Tabelle zu analysieren und dann dieselbe COUNT (*) -Abfrage wie bei der ersten Transaktion auszuführen:

begin; [waits] copy users from ...; select count(*) from users; analyze; end;

Die zweite Transaktion ist erfolgreich, da sie auf den Abschluss der ersten Transaktion warten muss. Die COUNT Abfrage gibt die Anzahl auf der Grundlage des abgeschlossenen Ladevorgangs zurück.