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.
DDL und verteilte Transaktionen in Aurora DSQL
Die Datendefinitionssprache (DDL) verhält sich in Aurora DSQL anders als in PostgreSQL. Aurora DSQL verfügt über eine verteilte Multi-AZ-Datenbankschicht und Shared-Nothing-Datenbankschicht, die auf Mehrmandanten-Rechen- und Speicherflotten aufbaut. Da kein einziger primärer Datenbankknoten oder Leader existiert, ist der Datenbankkatalog verteilt. Somit verwaltet Aurora DSQL DDL-Schemaänderungen als verteilte Transaktionen.
Insbesondere verhält sich DDL in Aurora DSQL wie folgt anders:
- Fehler bei der Parallelitätssteuerung
-
Aurora DSQL gibt einen Fehler wegen Verletzung der Parallelitätskontrolle zurück, wenn Sie eine Transaktion ausführen, während eine andere Transaktion eine Ressource aktualisiert. Stellen Sie sich zum Beispiel die folgende Abfolge von Aktionen vor:
-
In Sitzung 1 fügt ein Benutzer der Tabelle eine Spalte hinzu
mytable
. -
In Sitzung 2 versucht ein Benutzer, eine Zeile in einzufügen
mytable
.Aurora DSQL gibt den Fehler zurück
SQL Error [40001]: ERROR: schema has been updated by another transaction, please retry: (OC001).
-
- DDL und DML in derselben Transaktion
-
Transaktionen in Aurora DSQL können nur eine DDL-Anweisung enthalten und nicht gleichzeitig DDL- und DML-Anweisungen enthalten. Diese Einschränkung bedeutet, dass Sie innerhalb derselben Transaktion keine Tabelle erstellen und Daten in dieselbe Tabelle einfügen können. Aurora DSQL unterstützt beispielsweise die folgenden sequentiellen Transaktionen.
BEGIN; CREATE TABLE mytable (ID_col integer); COMMIT; BEGIN; INSERT into FOO VALUES (1); COMMIT;
Aurora DSQL unterstützt die folgende Transaktion nicht, die
CREATE
sowohl als auchINSERT
Anweisungen enthält.BEGIN; CREATE TABLE FOO (ID_col integer); INSERT into FOO VALUES (1); COMMIT;
- Asynchrone DDL
-
In Standard-PostgreSQL sperren DDL-Operationen wie das
CREATE INDEX
Sperren der betroffenen Tabelle, sodass sie für Lese- und Schreibvorgänge aus anderen Sitzungen nicht verfügbar ist. In Aurora DSQL werden diese DDL-Anweisungen asynchron mithilfe eines Hintergrundmanagers ausgeführt. Der Zugriff auf die betroffene Tabelle ist nicht blockiert. Somit kann DDL auf großen Tabellen ohne Ausfallzeiten oder Leistungseinbußen ausgeführt werden. Weitere Informationen zum asynchronen Job-Manager in Aurora DSQL finden Sie unter. Asynchrone Indizes in Aurora DSQL