Artikel ini di peruntukkan pengguna Database PostgreSQL yang memutuskan untuk melakukan defrag terhadap database anda.
Berikut adalah langkah langkah untuk melakukan defrag di database PostgreSQL :
- Cek tabel tabel dan index index yang memiliki fragmentasi dengan menjalankan skrip berikut ini dan melihat nilai rasio dan wastebyte dari tabel bloat anda.
- Nilai rasio itu menentukan seberapa besar fragmentasi yang terjadi di dalam tabel atau index anda.
- Semakin besar rasio semakin besar fragmentasi yang terjadi.
- Wastebyte adalah kondisi dimana blok data tidak dapat dipergunakan untuk menyimpan data.
- Apabila anda mendapati rasio > 1.5 lakukan VACUUM ANALYZE.
- VACUUM ini akan merubah wastebyte yang tidak dapat dipergunakan untuk transaksi menjadi aktif dan dapat dipergunakan lagi.
- ANALYZE akan melakukan pembuatan statistik untuk tabel atau index tersebut.
- Dengan melakukan VACUUM ANALYZE ini, maka wastebyte yang ada akan di aktifkan kembali, walaupun posisinya berada ditengah tengah blok data yang ada isinya.
- Apabila anda mendapati rasio > 5 lakukan VACUUM FULL, REINDEX TABLE dan ANALYZE
- VACUUM FULL ini akan mengaktifkan kembali wastebyte yang ada dan mengisinya dengan blok data dari bagian akhir dari tabel atau index. Sehingga bagian yang ter-fragmentasi itu akan terisi dengan data, kemudian sisa free space yang ada akan dikembalikan ke Sistem Operasi, sehingga tabel tidak akan menyimpan free-space lagi.
- VACUUM FULL ini akan mendefrag tabel, tetapi tidak mengurutkan datanya sesuai dengan primary key tabel itu.
- Kemudian lakukan REINDEX terhadap tabel ini, untuk membuat ulang index-indexnya.
- Kemudian lakukan ANALYZE untuk melakukan pembuatan statistik untuk tabel dan indexnya.
- Lakukan proses ini pada saat koneksi user sedikit, karena postgresql akan melakukan lock terhadap tabel secara keseluruhan. Untuk versi 9.0 keatas proses vacuum sangat cepat.
- Apabila anda mendapati rasio > 10 lakukan dengan metode CTAS.
- Untuk proses ini, pastikan jangan ada user atau applikasi yang terkoneksi ke database.
- Proses ini akan melakukan membuat tabel baru dengan data yang telah terurut berdasarkan primary key atau unique indexnya.
- Jangan lupa untuk melakukan ANALYZE di akhir proses untuk membuat statistik terhadap tabel dan indexnya.
- Solusi yang lain adalah menggunakan extensi pg_reorg.
- Solusi ini berbasis metode CTAS dan saya belum pernah mencobanya.
Demikian cara saya untuk melakukan defrag database PostgreSQL.
Bagaimana dengan anda ?
waa…. ilmu saya belum nyampe sini… waa….