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à.
Limitazioni DML e altre informazioni per Aurora PostgreSQL Limitless Database
I seguenti argomenti descrivono le limitazioni o forniscono ulteriori informazioni per i comandi DML e di elaborazione delle query SQL in Aurora PostgreSQL Limitless Database.
ANALYZE
Il comando ANALYZE 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 ANALYZE
In Aurora PostgreSQL Limitless Database, il comando ANALYZE 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 le esecuzioni di ANALYZE, le statistiche delle tabelle vengono calcolate su uno dei router e quindi copiate sui router peer.
CLUSTER
Il comando CLUSTER riordina fisicamente una tabella in base a un indice. L’indice deve essere già stato definito nella tabella. In Aurora PostgreSQL Limitless Database, il clustering è locale alla parte dell’indice presente su ogni shard.
Per ulteriori informazioni, consulta CLUSTER
EXPLAIN
Si utilizza il seguente parametro per configurare l’output del comando EXPLAIN:
-
rds_aurora.limitless_explain_options: cosa includere nell’outputEXPLAIN. 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’output EXPLAIN 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 parametro enable_seqscan per far sì che la scansione dell’indice venga utilizzata sul livello shard.
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 comando EXPLAIN, consulta EXPLAIN
INSERT
La maggior parte dei comandi INSERT è supportata in Aurora PostgreSQL Limitless Database.
PostgreSQL non ha un comando UPSERT 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 comando INSERT, consulta INSERT
UPDATE
L’aggiornamento della chiave shard non è supportato. Ad esempio, si dispone di una tabella sottoposta a sharding denominata customers, con una chiave shard customer_id. Le seguenti istruzioni DML 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, è necessario prima DELETE la riga con la chiave shard key, quindi INSERT una nuova riga con il valore della chiave shard aggiornato.
Per ulteriori informazioni sul comando UPDATE, consulta Updating data
VACUUM
È possibile eseguire l’operazione di vacuum sia sulle tabelle sottoposte a sharding che su quelle di riferimento. Le seguenti funzioni VACUUM sono completamente supportate in Aurora PostgreSQL Limitless Database.
-
VACUUM
-
DISABLE_PAGE_SKIPPING
-
FREEZE
-
FULL
-
INDEX_CLEANUP
-
PARALLEL
-
PROCESS_TOAST
-
TRUNCATE
-
VERBOSE
VACUUM su Aurora PostgreSQL Limitless Database presenta le seguenti limitazioni:
-
L’estensione pg_visibility_map
non è supportata. -
Il controllo degli indici non utilizzati con la vista pg_stat_all_indexes
non è supportato. -
Le viste consolidate per pg_stat_user_indexes
, pg_class e pg_stats non sono implementate.
Per ulteriori informazioni sul comando VACUUM, consulta VACUUM