DMLlimitazioni e altre informazioni per Aurora SQL Postgre Limitless Database - Amazon Aurora

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 ANALYZEdi SQL Postgre.

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'ANALYZEesecuzione, 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. CLUSTERSQL

EXPLAIN

Utilizzate il seguente parametro per configurare l'output del EXPLAIN comando:

  • rds_aurora.limitless_explain_options— Cosa includere nell'EXPLAINoutput. 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'EXPLAINoutput 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 EXPLAINla documentazione di SQL Postgre.

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 CONFLICTnon è 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 INSERTla documentazione di SQL Postgre.

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 nella documentazione di Postgre. SQL

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

  • ANALYZE

  • DISABLE_PAGE_SKIPPING

  • FREEZE

  • FULL

  • INDEX_CLEANUP

  • PARALLEL

  • PROCESS_TOAST

  • TRUNCATE

  • VERBOSE

VACUUMsu Aurora Postgre SQL Limitless Database presenta le seguenti limitazioni:

Per ulteriori informazioni sul comando, consulta la VACUUM documentazione di VACUUMPostgre. SQL Per ulteriori informazioni su come funziona l'aspirazione in Aurora SQL Postgre Limitless Database, vedere. Recupero dello spazio di archiviazione mediante aspirazione