

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

# Keterbatasan DML dan informasi lainnya untuk Aurora PostgreSQL Limitless Database
<a name="limitless-reference.DML-limitations"></a>

Topik berikut menjelaskan keterbatasan atau memberikan informasi lebih lanjut untuk DML/query processing SQL perintah di Aurora PostgreSQL Limitless Database.

**Topics**
+ [MENGANALISA](#limitless-reference.DML-limitations.ANALYZE)
+ [GUGUS](#limitless-reference.DML-limitations.CLUSTER)
+ [EXPLAIN](#limitless-reference.DML-limitations.EXPLAIN)
+ [INSERT](#limitless-reference.DML-limitations.INSERT)
+ [UPDATE](#limitless-reference.DML-limitations.UPDATE)
+ [VAKUM](#limitless-reference.DML-limitations.VACUUM)

## MENGANALISA
<a name="limitless-reference.DML-limitations.ANALYZE"></a>

`ANALYZE`Perintah 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 selengkapnya, lihat [ANALYZE](https://www.postgresql.org/docs/current/sql-analyze.html) di dokumentasi PostgreSQL.

Di Aurora PostgreSQL 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.

## GUGUS
<a name="limitless-reference.DML-limitations.CLUSTER"></a>

`CLUSTER`Perintah secara fisik menyusun ulang tabel berdasarkan indeks. Indeks harus sudah ditentukan di atas meja. Di Aurora PostgreSQL Limitless Database, pengelompokan bersifat lokal ke bagian indeks yang ada pada setiap pecahan.

Untuk informasi selengkapnya, lihat [CLUSTER](https://www.postgresql.org/docs/current/sql-cluster.html) dalam dokumentasi PostgreSQL.

## EXPLAIN
<a name="limitless-reference.DML-limitations.EXPLAIN"></a>

Anda menggunakan parameter berikut untuk mengkonfigurasi output dari `EXPLAIN` perintah:
+ `rds_aurora.limitless_explain_options`— Apa yang harus dimasukkan dalam `EXPLAIN` output. Nilai defaultnya adalah`single_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` dan`single_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 selengkapnya tentang `EXPLAIN` perintah, lihat [MENJELASKAN dalam dokumentasi](https://www.postgresql.org/docs/current/sql-explain.html) PostgreSQL.

## INSERT
<a name="limitless-reference.DML-limitations.INSERT"></a>

Sebagian besar `INSERT` perintah didukung di Aurora PostgreSQL Limitless Database.

PostgreSQL tidak memiliki perintah `UPSERT` eksplisit, tetapi mendukung pernyataan. `INSERT ... ON CONFLICT`

`INSERT ... ON CONFLICT`tidak 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 selengkapnya tentang `INSERT` perintah, lihat [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) dalam dokumentasi PostgreSQL.

## UPDATE
<a name="limitless-reference.DML-limitations.UPDATE"></a>

Memperbarui kunci shard tidak didukung. Misalnya, Anda memiliki tabel sharded yang disebut`customers`, dengan kunci pecahan. `customer_id` Pernyataan DHTML 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](https://www.postgresql.org/docs/current/dml-update.html) PostgreSQL.

## VAKUM
<a name="limitless-reference.DML-limitations.VACUUM"></a>

Anda dapat melakukan penyedot debu pada tabel sharded dan referensi. `VACUUM`Fungsi-fungsi berikut didukung penuh di Aurora PostgreSQL Limitless Database:
+ VAKUM
+ [MENGANALISA](#limitless-reference.DML-limitations.ANALYZE)
+ DISABLE\_PAGE\_SKIPPING
+ MEMBEKU
+ PENUH
+ INDEX\_CLEANUP
+ PARALEL
+ PROCESS\_TOAST
+ MEMOTONG
+ BERTELE-TELE

`VACUUM`pada Aurora PostgreSQL Limitless Database memiliki batasan sebagai berikut:
+ Ekstensi [pg\_visibility\_map](https://www.postgresql.org/docs/current/pgvisibility.html) tidak didukung.
+ Memeriksa indeks yang tidak digunakan dengan tampilan [pg\_stat\_all\_indexes](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ALL-INDEXES-VIEW) tidak didukung.
+ [https://www.postgresql.org/docs/current/catalog-pg-class.html](https://www.postgresql.org/docs/current/catalog-pg-class.html)

Untuk informasi lebih lanjut tentang `VACUUM` perintah, lihat [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html) dalam dokumentasi PostgreSQL. Untuk informasi lebih lanjut tentang cara kerja penyedot debu di Aurora PostgreSQL Limitless Database, lihat. [Merebut kembali ruang penyimpanan dengan menyedot debu](limitless-vacuum.md)