

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

# Merebut kembali ruang penyimpanan dengan menyedot debu
<a name="limitless-vacuum"></a>

Postgre SQL Multiversion Concurrency Control (MVCC) membantu menjaga integritas data dengan menyimpan salinan internal baris yang diperbarui atau dihapus sampai transaksi dilakukan atau dibatalkan. Salinan ini, juga disebut *tupel*, dapat menyebabkan kembung meja jika tidak dibersihkan secara teratur. Postgre SQL memesan transaksi berdasarkan transaksinyaIDs, dan Postgre SQL menggunakan ID transaksi berbasis MVCC untuk mengontrol visibilitas Tuple dan memberikan isolasi transaksi. Setiap transaksi menetapkan snapshot data, dan setiap tuple memiliki versi. Baik snapshot maupun versi berbasis ID transaksi.

Untuk membersihkan data, `VACUUM` utilitas melakukan empat fungsi utama di PostgreSQL:
+ `VACUUM`— Menghapus versi baris kedaluwarsa, membuat ruang tersedia untuk digunakan kembali.
+ `VACUUM FULL`— Menyediakan defragmentasi lengkap dengan menghapus versi baris mati dan memadatkan tabel, mengurangi ukuran dan meningkatkan efisiensi.
+ `VACUUM FREEZE`— Melindungi dari masalah sampul ID transaksi dengan menandai versi baris yang lebih lama sebagai beku.
+ `VACUUM ANALYZE`— Menghapus versi baris mati dan memperbarui statistik perencanaan kueri database. Ini adalah kombinasi dari fungsi `VACUUM` dan `ANALYZE` fungsi. Untuk informasi lebih lanjut tentang cara `ANALYZE` kerja di Aurora Postgre SQL Limitless Database, lihat. [ANALYZE](limitless-reference.DML-limitations.md#limitless-reference.DML-limitations.ANALYZE)

 Seperti halnyaMVCC, menyedot debu di Aurora Postgre berbasis ID transaksi. SQL Jika ada transaksi yang sedang berlangsung saat penyedot debu dimulai, baris yang masih terlihat oleh transaksi tersebut tidak akan dihapus.

Untuk informasi lebih lanjut tentang `VACUUM` utilitas, lihat [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html)di dokumentasi PostgreSQL. Untuk informasi lebih lanjut tentang `VACUUM` dukungan di Aurora Postgre SQL Limitless Database, lihat. [VACUUM](limitless-reference.DML-limitations.md#limitless-reference.DML-limitations.VACUUM)

**Topics**
+ [AUTOVACUUM](#limitless-autovacuum)
+ [Penyedot debu berbasis waktu di Aurora Postgre Limitless Database SQL](#limitless-vacuum.time-based)
+ [Menggunakan statistik database untuk menyedot debu](#limitless-vacuum.stats)
+ [Perbedaan perilaku menyedot debu antara Aurora Postgre dan Aurora SQL Postgre Limitless Database SQL](#limitless-vacuum-limitations)

## AUTOVACUUM
<a name="limitless-autovacuum"></a>

Aurora Postgre SQL menggunakan `VACUUM` dan `AUTOVACUUM` utilitas untuk menghapus tupel yang tidak dibutuhkan. Mekanisme yang mendasari `AUTOVACUUM` dan manual `VACUUM` adalah sama; satu-satunya perbedaan adalah otomatisasi.

`AUTOVACUUM`di Aurora Postgre SQL dan Aurora SQL Postgre Limitless Database adalah kombinasi dari dan utilitas. `VACUUM` `ANALYZE` `AUTOVACUUM`menentukan database dan tabel mana yang harus dibersihkan, sesuai dengan aturan yang telah ditentukan, seperti persentase tupel mati dan jumlah sisipan.

Misalnya, `AUTOVACUUM` “bangun” secara berkala untuk melakukan pembersihan. Interval dikendalikan oleh `autovacuum_naptime` parameter. Nilai default adalah 1 menit. Nilai default untuk `AUTOVACUUM` dan parameter `VACUUM` konfigurasi sama untuk Aurora Postgre SQL Limitless Database seperti untuk Aurora Postgre. SQL

`AUTOVACUUM`Daemon, jika diaktifkan, secara otomatis mengeluarkan `ANALYZE` perintah setiap kali konten tabel telah berubah secara memadai. Di Aurora Postgre SQL Limitless Database, `AUTOVACUUM` masalah `ANALYZE` pada router dan pecahan.

[Untuk informasi selengkapnya tentang parameter penyimpanan `AUTOVACUUM` daemon dan tabel yang terkait`AUTOVACUUM`, lihat [Daemon Autovacuum dan Parameter penyimpanan dalam dokumentasi Postgre](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM ).](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html) SQL

## Penyedot debu berbasis waktu di Aurora Postgre Limitless Database SQL
<a name="limitless-vacuum.time-based"></a>

Aurora Postgre SQL Limitless Database adalah sistem terdistribusi, yang berarti bahwa beberapa contoh dapat terlibat dalam transaksi. Oleh karena itu, visibilitas berbasis ID transaksi tidak berlaku. Sebaliknya, Aurora Postgre SQL Limitless Database menggunakan visibilitas *berbasis waktu*, karena transaksi IDs tidak “disatukan” di seluruh instance, tetapi waktu dapat “disatukan” di seluruh instance. Setiap snapshot transaksi dan setiap versi Tuple mematuhi waktu, bukan ID transaksi. Untuk lebih spesifik, snapshot transaksi memiliki waktu mulai snapshot, dan Tuple memiliki waktu pembuatan (ketika `INSERT` atau `UPDATE` terjadi) dan waktu penghapusan (ketika terjadi). `DELETE`

Untuk menjaga konsistensi data di seluruh instance dalam grup pecahan DB, Aurora Postgre SQL Limitless Database harus memastikan bahwa penyedot debu tidak menghapus tupel apa pun yang masih terlihat oleh transaksi aktif apa pun di grup pecahan DB. Oleh karena itu, menyedot debu di Aurora SQL Postgre Limitless Database juga berbasis waktu. Aspek lain `VACUUM` tetap sama, termasuk bahwa untuk berjalan `VACUUM` pada tabel tertentu, pengguna harus memiliki akses ke tabel itu.

**catatan**  
Kami sangat menyarankan agar Anda tidak membiarkan transaksi terbuka untuk jangka waktu yang lama.  
Penyedot debu berbasis waktu mengkonsumsi lebih banyak memori daripada penyedot debu berbasis ID transaksi.

Contoh berikut menggambarkan cara kerja penyedot debu berbasis waktu.

1. Tabel pelanggan didistribusikan di empat pecahan.

1. Transaksi 1 dimulai dengan pembacaan berulang, dan menargetkan hanya satu pecahan (pecahan 1). Transaksi ini tetap terbuka.

   Transaksi 1 lebih tua dari transaksi lain yang dimulai setelahnya.

1. Transaksi 2 dimulai kemudian, dan menghapus semua tupel dari tabel, lalu melakukan.

1. Jika `AUTOVACUUM` atau manual `VACUUM` mencoba membersihkan tupel mati (mati karena transaksi 2), itu tidak menghapus apa pun.

   Hal ini berlaku tidak hanya untuk pecahan 1, tetapi juga untuk pecahan 2-4, karena transaksi 1 mungkin masih perlu mengakses tupel ini. Mereka masih terlihat untuk transaksi 1 karenaMVCC.

Langkah terakhir dicapai melalui sinkronisasi, sehingga semua pecahan menyadari transaksi 1, meskipun transaksi 1 tidak menyentuh semuanya.

## Menggunakan statistik database untuk menyedot debu
<a name="limitless-vacuum.stats"></a>

[Untuk mendapatkan informasi tentang tupel yang mungkin perlu Anda bersihkan, gunakan tampilan [limitless\$1stat\$1all\$1tables, yang bekerja mirip dengan pg\$1stat\$1all\$1tables](limitless-monitoring-views.md#limitless_stat_all_tables).](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ALL-TABLES-VIEW) Contoh berikut menanyakan tampilan.

```
SELECT * FROM rds_aurora.limitless_stat_all_tables WHERE relname LIKE '%customer%';
```

[[Demikian pula, untuk statistik database gunakan [limitless\$1stat\$1database alih-alih pg\$1stat\$1database, dan limitless\$1stat\$1activity](limitless-monitoring-views.md#limitless_stat_database) alih-alih [pg\$1stat\$1activity](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW).](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW)](limitless-monitoring-views.md#limitless_stat_activity)

[Untuk memeriksa penggunaan disk tabel, gunakan fungsi [limitless\$1stat\$1relation\$1sizes, yang bekerja mirip dengan pg\$1relation\$1size](limitless-monitoring-functions.md#limitless_stat_relation_sizes).](https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT) Contoh berikut query fungsi.

```
SELECT * FROM rds_aurora.limitless_stat_relation_sizes('public','customer');
```

[[Untuk melacak kemajuan `VACUUM` operasi pada Aurora Postgre SQL Limitless Database, gunakan tampilan limitless\$1stat\$1progress\$1vacuum alih-alih pg\$1stat\$1progress\$1vacuum.](https://www.postgresql.org/docs/15/progress-reporting.html#VACUUM-PROGRESS-REPORTING)](limitless-monitoring-views.md#limitless_stat_progress_vacuum) Contoh berikut menanyakan tampilan.

```
SELECT * FROM rds_aurora.limitless_stat_progress_vacuum;
```

Untuk informasi selengkapnya, silakan lihat [Tampilan Database Tanpa Batas Aurora PostgreSQL](limitless-monitoring-views.md) dan [Fungsi Basis Data Tanpa Batas Aurora Postgre SQL](limitless-monitoring-functions.md).

## Perbedaan perilaku menyedot debu antara Aurora Postgre dan Aurora SQL Postgre Limitless Database SQL
<a name="limitless-vacuum-limitations"></a>

Beberapa perbedaan lain antara Aurora Postgre SQL dan Aurora SQL Postgre Limitless Database dalam cara kerja penyedot debu adalah sebagai berikut:
+ Aurora Postgre SQL melakukan `VACUUM` operasi pada transaksi IDs hingga transaksi tertua yang sedang berlangsung. Jika tidak ada transaksi yang sedang berlangsung dalam database`VACUUM`, lakukan operasi hingga transaksi terakhir.
+ Aurora Postgre SQL Limitless Database menyinkronkan snapshot waktu tertua setiap 10 detik. Oleh karena itu, `VACUUM` mungkin tidak melakukan operasi pada setiap transaksi yang dijalankan dalam 10 detik terakhir.

Untuk informasi tentang dukungan `VACUUM` di Aurora Postgre SQL Limitless Database, lihat di. [VACUUM](limitless-reference.DML-limitations.md#limitless-reference.DML-limitations.VACUUM) [Referensi Basis Data Tanpa Batas Aurora Postgre SQLReferensi Database Tanpa Batas](limitless-reference.md)