DMLketerbatasan dan informasi lainnya untuk Aurora SQL Postgre Limitless Database - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

DMLketerbatasan dan informasi lainnya untuk Aurora SQL Postgre Limitless Database

Topik berikut menjelaskan batasan atau memberikan informasi lebih lanjut untuk DML dan SQL perintah pemrosesan kueri di Aurora SQL Postgre Limitless Database.

ANALYZE

ANALYZEPerintah mengumpulkan statistik tentang isi tabel dalam database. Selanjutnya, perencana kueri menggunakan statistik ini untuk membantu menentukan rencana eksekusi yang paling efisien untuk kueri. Untuk informasi lebih lanjut, lihat ANALYZEdi dokumentasi PostgreSQL.

Dalam Aurora Postgre SQL Limitless Database, ANALYZE perintah mengumpulkan statistik tabel di semua router dan pecahan saat dijalankan.

Untuk mencegah perhitungan statistik pada setiap router selama ANALYZE berjalan, statistik tabel dihitung pada salah satu router dan kemudian disalin ke router peer.

CLUSTER

CLUSTERPerintah secara fisik menyusun ulang tabel berdasarkan indeks. Indeks harus sudah ditentukan di atas meja. Dalam Aurora Postgre SQL Limitless Database, pengelompokan bersifat lokal ke bagian indeks yang ada pada setiap pecahan.

Untuk informasi lebih lanjut, lihat CLUSTERdi dokumentasi PostgreSQL.

EXPLAIN

Anda menggunakan parameter berikut untuk mengkonfigurasi output dari EXPLAIN perintah:

  • rds_aurora.limitless_explain_options— Apa yang harus dimasukkan dalam EXPLAIN output. Nilai defaultnya adalahsingle_shard_optimization: apakah paket dioptimalkan dengan pecahan tunggal ditampilkan, tetapi paket pecahan tidak disertakan.

Dalam contoh ini, EXPLAIN output tidak menampilkan rencana dari pecahan.

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)

Sekarang kita mengatur rds_aurora.limitless_explain_options untuk memasukkan shard_plans dansingle_shard_optimization. Kita dapat melihat rencana eksekusi pernyataan pada router dan pecahan. Selain itu, kami menonaktifkan enable_seqscan parameter untuk menegakkan bahwa pemindaian indeks digunakan pada lapisan pecahan.

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)

Untuk informasi lebih lanjut tentang EXPLAIN perintah, lihat EXPLAINdi dokumentasi PostgreSQL.

INSERT

Sebagian besar INSERT perintah didukung di Aurora SQL Postgre Limitless Database.

Postgre SQL tidak memiliki UPSERT perintah eksplisit, tetapi mendukung pernyataan. INSERT ... ON CONFLICT

INSERT ... ON CONFLICTtidak didukung jika tindakan konflik memiliki subquery atau fungsi yang bisa berubah:

-- 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.

Untuk informasi lebih lanjut tentang INSERT perintah, lihat INSERTdi dokumentasi PostgreSQL.

UPDATE

Memperbarui kunci shard tidak didukung. Misalnya, Anda memiliki tabel sharded yang disebutcustomers, dengan kunci pecahan. customer_id DMLPernyataan berikut menyebabkan kesalahan:

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

Untuk memperbarui kunci shard, pertama Anda harus DELETE baris dengan kunci shard, lalu baris baru INSERT dengan nilai kunci shard yang diperbarui.

Untuk informasi selengkapnya tentang UPDATE perintah, lihat Memperbarui data dalam dokumentasi PostgreSQL.

VACUUM

Anda dapat melakukan penyedot debu pada tabel sharded dan referensi. VACUUMFungsi-fungsi berikut didukung penuh di Aurora SQL Postgre Limitless Database:

  • VACUUM

  • ANALYZE

  • DISABLE_PAGE_SKIPPING

  • FREEZE

  • FULL

  • INDEX_CLEANUP

  • PARALLEL

  • PROCESS_TOAST

  • TRUNCATE

  • VERBOSE

VACUUMpada Aurora Postgre SQL Limitless Database memiliki batasan sebagai berikut:

Untuk informasi lebih lanjut tentang VACUUM perintah, lihat VACUUMdi dokumentasi PostgreSQL. Untuk informasi lebih lanjut tentang cara kerja penyedot debu di Aurora SQL Postgre Limitless Database, lihat. Merebut kembali ruang penyimpanan dengan menyedot debu