Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
DMLlimitazioni e altre informazioni per Aurora SQL Postgre Limitless Database
I seguenti argomenti descrivono le limitazioni o forniscono ulteriori informazioni DML e SQL comandi di elaborazione delle query in Aurora SQL Postgre Limitless Database.
ANALYZE
Il ANALYZE
comando raccoglie statistiche sul contenuto delle tabelle nel database. Successivamente, il pianificatore di query utilizza queste statistiche per determinare i piani di esecuzione più efficienti per le query. Per ulteriori informazioni, consulta la documentazione ANALYZE
In Aurora Postgre SQL Limitless Database, il ANALYZE
comando raccoglie le statistiche delle tabelle su tutti i router e gli shard durante l'esecuzione.
Per impedire il calcolo delle statistiche su ogni router durante l'ANALYZE
esecuzione, le statistiche delle tabelle vengono calcolate su uno dei router e quindi copiate sui router peer.
CLUSTER
Il CLUSTER
comando riordina fisicamente una tabella in base a un indice. L'indice deve essere già stato definito nella tabella. In Aurora Postgre SQL Limitless Database, il clustering è locale rispetto alla parte dell'indice presente su ogni shard.
Per ulteriori informazioni, consulta la documentazione di Postgre. CLUSTER
EXPLAIN
Utilizzate il seguente parametro per configurare l'output del EXPLAIN
comando:
-
rds_aurora.limitless_explain_options
— Cosa includere nell'EXPLAIN
output. Il valore predefinito èsingle_shard_optimization
: viene mostrato se i piani sono ottimizzati per shard singolo, ma i piani shard non sono inclusi.
In questo esempio, l'EXPLAIN
output non mostra i piani ricavati dagli shard.
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)
Ora impostiamo l'opzione rds_aurora.limitless_explain_options
per includere shard_plans
esingle_shard_optimization
. Possiamo visualizzare i piani di esecuzione delle istruzioni sia sui router che sugli shard. Inoltre, disabilitiamo il enable_seqscan
parametro per far sì che la scansione dell'indice venga utilizzata sullo shard layer.
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)
Per ulteriori informazioni sul EXPLAIN
comando, consulta EXPLAIN
INSERT
La maggior parte dei INSERT
comandi è supportata in Aurora SQL Postgre Limitless Database.
Postgre SQL non ha un UPSERT
comando esplicito, ma supporta le istruzioni. INSERT ... ON CONFLICT
INSERT ... ON CONFLICT
non è supportato se l'azione di conflitto ha una sottoquery o una funzione mutabile:
-- 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.
Per ulteriori informazioni sul INSERT
comando, consulta INSERT
UPDATE
L'aggiornamento della chiave shard non è supportato. Ad esempio, hai una tabella condivisa chiamatacustomers
, con una chiave shard. customer_id
Le seguenti DML istruzioni causano errori:
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
Per aggiornare una chiave shard, devi prima accedere alla riga con DELETE
la shard key, poi a INSERT
una nuova riga con il valore della shard key aggiornato.
Per ulteriori informazioni sul UPDATE
comando, consulta Aggiornamento dei dati
VACUUM
È possibile eseguire l'aspirazione sia su tabelle frammentate che su tabelle di riferimento. Le seguenti VACUUM
funzioni sono completamente supportate in Aurora SQL Postgre Limitless Database:
-
VACUUM
-
DISABLE_PAGE_SKIPPING
-
FREEZE
-
FULL
-
INDEX_CLEANUP
-
PARALLEL
-
PROCESS_TOAST
-
TRUNCATE
-
VERBOSE
VACUUM
su Aurora Postgre SQL Limitless Database presenta le seguenti limitazioni:
Per ulteriori informazioni sul comando, consulta la VACUUM
documentazione di VACUUM