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 ANALYZE
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 CLUSTER
EXPLAIN
Sie verwenden den folgenden Parameter, um die Ausgabe des EXPLAIN
Befehls zu konfigurieren:
-
rds_aurora.limitless_explain_options
— Was in dieEXPLAIN
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 EXPLAIN
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 CONFLICT
wird 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 INSERT
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
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
-
DISABLE_PAGE_SKIPPING
-
FREEZE
-
FULL
-
INDEX_CLEANUP
-
PARALLEL
-
PROCESS_TOAST
-
TRUNCATE
-
VERBOSE
VACUUM
auf Aurora Postgre SQL Limitless Database gelten die folgenden Einschränkungen:
Weitere Informationen zu dem Befehl finden Sie in der Postgre-Dokumentation. VACUUM
VACUUM