DMLEinschränkungen und andere Informationen für Aurora Postgre SQL Limitless Database - Amazon Aurora

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.

DMLEinschränkungen und andere Informationen für Aurora Postgre SQL Limitless Database

In den folgenden Themen werden Einschränkungen beschrieben oder weitere Informationen zu SQL Befehlen DML und zur Abfrageverarbeitung in Aurora Postgre SQL Limitless Database bereitgestellt.

ANALYZE

Der ANALYZE Befehl sammelt Statistiken über den Inhalt von Tabellen in der Datenbank. Anschließend verwendet der Abfrageplaner diese Statistiken, um die effizientesten Ausführungspläne für Abfragen zu ermitteln. Weitere Informationen finden Sie ANALYZEin der SQL Postgre-Dokumentation.

In Aurora Postgre SQL Limitless Database sammelt der ANALYZE Befehl Tabellenstatistiken für alle Router und Shards, wenn er ausgeführt wird.

Um zu verhindern, dass während der ANALYZE Ausführung Statistiken für jeden Router berechnet werden, werden Tabellenstatistiken auf einem der Router berechnet und dann auf Peer-Router kopiert.

CLUSTER

Der CLUSTER Befehl ordnet eine Tabelle anhand eines Indexes physisch neu an. Der Index muss bereits für die Tabelle definiert worden sein. In Aurora Postgre SQL Limitless Database ist das Clustering lokal für den Teil des Index, der auf jedem Shard vorhanden ist.

Weitere Informationen finden Sie CLUSTERin der Postgre-Dokumentation. SQL

EXPLAIN

Sie verwenden den folgenden Parameter, um die Ausgabe des EXPLAIN Befehls zu konfigurieren:

  • rds_aurora.limitless_explain_options— Was in die EXPLAIN Ausgabe aufgenommen werden soll. Der Standardwert istsingle_shard_optimization: Es wird angezeigt, ob Pläne für Single-Shard optimiert sind, Shard-Pläne sind jedoch nicht enthalten.

In diesem Beispiel werden in der EXPLAIN Ausgabe keine Pläne aus Shards angezeigt.

postgres_limitless=> EXPLAIN SELECT * FROM employees where id =25; QUERY PLAN ------------------------------------------------------ Foreign Scan (cost=100.00..101.00 rows=100 width=0) Single Shard Optimized (2 rows)

Jetzt setzen wir den Wert rds_aurora.limitless_explain_options auf Include shard_plans undsingle_shard_optimization. Wir können die Ausführungspläne von Anweisungen sowohl auf Routern als auch auf Shards einsehen. Außerdem deaktivieren wir den enable_seqscan Parameter, um zu erzwingen, dass der Indexscan auf der Shard-Ebene verwendet wird.

postgres_limitless=> SET rds_aurora.limitless_explain_options = shard_plans, single_shard_optimization; SET postgres_limitless=> SET enable_seqscan = OFF; SET postgres_limitless=> EXPLAIN SELECT * FROM employees WHERE id = 25; QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- Foreign Scan (cost=100.00..101.00 rows=100 width=0) Remote Plans from Shard postgres_s4: Index Scan using employees_ts00287_id_idx on employees_ts00287 employees_fs00003 (cost=0.14..8.16 rows=1 width=15) Index Cond: (id = 25) Single Shard Optimized (5 rows)

Weitere Informationen zu diesem EXPLAIN Befehl finden Sie EXPLAINin der Postgre-Dokumentation. SQL

INSERT

Die meisten INSERT Befehle werden in Aurora Postgre SQL Limitless Database unterstützt.

Postgre SQL hat keinen expliziten UPSERT Befehl, unterstützt aber Anweisungen. INSERT ... ON CONFLICT

INSERT ... ON CONFLICTwird nicht unterstützt, wenn die Konfliktaktion eine Unterabfrage oder eine veränderbare Funktion hat:

-- RANDOM is a mutable function. INSERT INTO sharded_table VALUES (1, 100) ON CONFLICT (id) DO UPDATE SET other_id = RANDOM(); ERROR: Aurora Limitless Tables doesn't support pushdown-unsafe functions with DO UPDATE clauses.

Weitere Informationen zu dem INSERT Befehl finden Sie INSERTin der SQL Postgre-Dokumentation.

UPDATE

Das Aktualisieren des Shard-Schlüssels wird nicht unterstützt. Sie haben beispielsweise eine Sharded-Tabelle namenscustomers, mit einem Shard-Schlüssel. customer_id Die folgenden DML Anweisungen verursachen Fehler:

postgres_limitless=> UPDATE customers SET customer_id = 11 WHERE customer_id =1; ERROR: Shard key column update is not supported postgres_limitless=> UPDATE customers SET customer_id = 11 WHERE customer_name='abc'; ERROR: Shard key column update is not supported

Um einen Shard-Schlüssel zu aktualisieren, müssen Sie zuerst DELETE die Zeile mit dem Shard-Schlüssel und dann INSERT eine neue Zeile mit dem aktualisierten Shard-Schlüsselwert erstellen.

Weitere Informationen zu diesem UPDATE Befehl finden Sie in der Postgre-Dokumentation unter Daten aktualisieren. SQL

VACUUM

Sie können das Löschen sowohl für Sharded- als auch für Referenztabellen durchführen. Die folgenden VACUUM Funktionen werden in Aurora Postgre SQL Limitless Database vollständig unterstützt:

  • VACUUM

  • ANALYZE

  • DISABLE_PAGE_SKIPPING

  • FREEZE

  • FULL

  • INDEX_CLEANUP

  • PARALLEL

  • PROCESS_TOAST

  • TRUNCATE

  • VERBOSE

VACUUMauf Aurora Postgre SQL Limitless Database gelten die folgenden Einschränkungen:

Weitere Informationen zu dem Befehl finden Sie in der Postgre-Dokumentation. VACUUM VACUUMSQL Weitere Informationen zur Funktionsweise des Staubsaugens in Aurora Postgre SQL Limitless Database finden Sie unter. Rückgewinnung von Speicherplatz durch Staubsaugen