

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

# Menghapus bloat dengan pg\$1repack
<a name="pg-repack"></a>

Anda dapat menggunakan `pg_repack` ekstensi untuk menghapus tabel dan indeks kembung dengan penguncian basis data minimal. Anda dapat membuat ekstensi ini di instance database dan menjalankan `pg_repack` klien (di mana versi klien cocok dengan versi ekstensi) dari Amazon Elastic Compute Cloud (Amazon EC2) atau dari komputer yang dapat terhubung ke database Anda. 

Tidak seperti`VACUUM FULL`, `pg_repack` tidak memerlukan downtime atau jendela pemeliharaan, dan tidak akan memblokir sesi lainnya.

`pg_repack`sangat membantu dalam situasi di mana`VACUUM FULL`,`CLUSTER`, atau `REINDEX` mungkin tidak bekerja. Ini menciptakan tabel baru yang berisi data tabel kembung, melacak perubahan dari tabel asli, dan kemudian mengganti tabel asli dengan yang baru. Itu tidak mengunci tabel asli untuk operasi baca atau tulis saat sedang membangun tabel baru.

Anda dapat menggunakan `pg_repack` untuk tabel lengkap atau untuk indeks. Untuk melihat daftar tugas, lihat dokumentasi [pg\$1repack](https://reorg.github.io/pg_repack/).

Pembatasan:
+ Untuk menjalankan`pg_repack`, tabel Anda harus memiliki kunci utama atau indeks unik.
+ `pg_repack `tidak akan bekerja dengan tabel sementara.
+ `pg_repack`tidak akan berfungsi pada tabel yang memiliki indeks global.
+ Ketika `pg_repack` sedang berlangsung, Anda tidak dapat melakukan operasi DDL pada tabel.

Tabel berikut menjelaskan perbedaan antara `pg_repack` dan`VACUUM FULL`.


|  |  | 
| --- |--- |
| `VACUUM FULL` | `pg_repack` | 
| Perintah bawaan | Ekstensi yang Anda jalankan dari Amazon EC2 atau komputer lokal Anda | 
| Membutuhkan `ACCESS EXCLUSIVE` kunci saat bekerja di atas meja | Membutuhkan `ACCESS EXCLUSIVE` kunci hanya untuk waktu yang singkat | 
| Bekerja dengan semua tabel | Bekerja pada tabel yang hanya memiliki kunci primer dan unik | 
| Membutuhkan dua kali lipat penyimpanan yang dikonsumsi oleh tabel dan indeks | Membutuhkan dua kali lipat penyimpanan yang dikonsumsi oleh tabel dan indeks | 

Untuk berjalan `pg_repack` di atas meja, gunakan perintah: 

```
pg_repack -h <host> -d <dbname> --table <tablename> -k
```

Untuk `pg_repack` menjalankan indeks, gunakan perintah:

```
pg_repack -h <host> -d <dbname> --index <index name>
```

Untuk informasi selengkapnya, lihat posting AWS blog [Hapus kembung dari Amazon Aurora dan RDS untuk PostgreSQL](https://aws.amazon.com/blogs/database/remove-bloat-from-amazon-aurora-and-rds-for-postgresql-with-pg_repack/) dengan pg\$1repack.

**Peringatan**  
`error-on-invalid-index`Kesalahan `pg_repack` biasanya berarti bahwa satu atau lebih indeks di atas meja rusak atau tidak valid. `pg_repack`tidak dapat beroperasi dengan aman pada tabel yang memiliki indeks tidak valid, karena bergantung pada indeks untuk konsistensi data selama proses pengemasan ulang.   
Kesalahan ini terjadi ketika:  
Indeks ditandai sebagai tidak valid (misalnya, karena `CREATE INDEX CONCURRENTLY` pernyataan gagal). 
Indeks rusak (mungkin karena masalah perangkat keras atau shutdown mendadak).
Gunakan kueri berikut untuk mengidentifikasi indeks yang tidak valid dan menjatuhkannya terlebih dahulu jika Anda menemukannya.  

```
SELECT indexrelid::regclass, indisvalid FROM pg_index WHERE indrelid = 'orders'::regclass AND NOT indisvalid; Drop the invalid index: DROP INDEX index_name;
```