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.
DML-Einschränkungen und andere Informationen für Aurora PostgreSQL Limitless Database
In den folgenden Themen werden Einschränkungen beschrieben oder weitere Informationen zu DML und zu SQL-Befehlen für die Abfrageverarbeitung in Aurora PostgreSQL Limitless Database bereitgestellt.
ANALYZE
Der Befehl ANALYZE 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 unter ANALYZE
In Aurora PostgreSQL Limitless Database sammelt der Befehl ANALYZE bei seiner Ausführung Tabellenstatistiken für alle Router und Shards.
Um zu verhindern, dass während der Ausführung von ANALYZE Statistiken für jeden Router berechnet werden, werden Tabellenstatistiken auf einem der Router berechnet und dann auf Peer-Router kopiert.
CLUSTER
Der Befehl CLUSTER ordnet eine Tabelle anhand eines Indexes physisch neu an. Der Index muss zuvor für die Tabelle definiert worden sein. In Aurora PostgreSQL Limitless Database findet das Clustering lokal für den Teil des Index statt, der auf jedem Shard vorhanden ist.
Weitere Informationen finden Sie unter CLUSTER
EXPLAIN
Sie verwenden den folgenden Parameter, um die Ausgabe des Befehls EXPLAIN zu konfigurieren:
-
rds_aurora.limitless_explain_options: Bestimmt, was in die AusgabeEXPLAINaufgenommen werden soll. Der Standardwert lautetsingle_shard_optimization: Er zeigt an, ob Pläne für Single-Shard optimiert sind, Shard-Pläne sind jedoch nicht enthalten.
In diesem Beispiel werden in der Ausgabe EXPLAIN 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 legen wir den Wert rds_aurora.limitless_explain_options fest, damit shard_plans und single_shard_optimization eingeschlossen sind. Wir können die Ausführungspläne von Anweisungen sowohl auf Routern als auch auf Shards anzeigen lassen. Außerdem deaktivieren wir den Parameter enable_seqscan, um zu erzwingen, dass der Indexscan auf 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 zum Befehl EXPLAIN finden Sie in der PostgreSQL-Dokumentation unter EXPLAIN
INSERT
Die meisten INSERT-Befehle werden in Aurora PostgreSQL Limitless Database unterstützt.
PostgreSQL hat keinen expliziten UPSERT-Befehl, unterstützt aber INSERT ... ON CONFLICT-Anweisungen.
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 zum Befehl INSERT finden Sie in der PostgreSQL-Dokumentation unter INSERT
UPDATE
Das Aktualisieren des Shard-Schlüssels wird nicht unterstützt. Sie haben beispielsweise eine Sharded-Tabelle namens customers mit dem 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 die Zeile mit dem Shard-Schlüssel löschen (DELETE) und dann eine neue Zeile mit dem aktualisierten Shard-Schlüsselwert einfügen (INSERT).
Weitere Informationen zum Befehl UPDATE finden Sie in der PostgreSQL-Dokumentation unter Aktualisieren von Daten
VACUUM
Sie können sowohl Sharded- als auch Referenztabellen leeren. Die folgenden VACUUM-Funktionen werden in Aurora PostgreSQL Limitless Database vollständig unterstützt:
-
VACUUM
-
DISABLE_PAGE_SKIPPING
-
FREEZE
-
FULL
-
INDEX_CLEANUP
-
PARALLEL
-
PROCESS_TOAST
-
TRUNCATE
-
VERBOSE
Für VACUUM gelten in Aurora PostgreSQL Limitless Database die folgenden Einschränkungen:
-
Die Erweiterung pg_visibility_map
wird nicht unterstützt. -
Die Suche nach ungenutzten Indizes über die Ansicht pg_stat_all_indexes
wird nicht unterstützt. -
Konsolidierte Ansichten für pg_stat_user_indexes
, pg_class und pg_stats sind nicht implementiert.
Weitere Informationen zum Befehl VACUUM finden Sie in der PostgreSQL-Dokumentation unter VACUUM