Lewati ke isi

Website & Domain

Cara Membersihkan Database WordPress yang Membengkak

Penyebab database WordPress membengkak dan cara membersihkannya dengan aman: revisi, transient, autoload, sampah komentar, sampai tabel sisa plugin.

Terbit 5 menit baca

Jawaban singkat

Database WordPress biasanya membengkak karena revisi artikel, transient kedaluwarsa, opsi autoload yang besar, komentar spam, dan tabel sisa plugin. Backup dulu, cari tabel terbesar, bersihkan bertahap, lalu batasi revisi supaya tidak menumpuk lagi.

Daftar isi
  1. Dari mana datangnya data sampah?
  2. Bagaimana cara tahu tabel mana yang paling besar?
  3. Langkah membersihkan database dengan aman
  4. Bagaimana dengan metadata yatim di wp_postmeta?
  5. Cara membersihkan lewat plugin atau manual?
  6. Bagaimana supaya tidak membengkak lagi?
  7. Pertanyaan yang sering diajukan

Database WordPress yang membengkak bisa dibersihkan dengan aman asal urutannya benar: backup, cari sumber pembengkakan, hapus yang memang sampah, lalu cegah supaya tidak menumpuk lagi.

Kenapa ini penting? Database yang gemuk membuat backup makin lama, pindah hosting makin repot, dan kuota hosting cepat habis. Kalau yang membengkak adalah opsi yang dimuat di setiap halaman, website juga bisa ikut terasa lambat.

Dari mana datangnya data sampah?

Hampir semua website WordPress yang sudah berjalan beberapa tahun mengumpulkan data yang tidak lagi dipakai. Sumber yang paling umum:

  • Revisi artikel. Setiap kali kamu menyimpan perubahan, WordPress menyimpan salinan lama. Bawaannya, revisi tidak dibatasi.
  • Autosave dan draf otomatis yang tertinggal.
  • Transient kedaluwarsa. Data sementara yang disimpan plugin di tabel wp_options dan kadang tidak ikut terhapus.
  • Komentar spam dan sampah. Komentar di tempat sampah baru terhapus otomatis setelah 30 hari secara bawaan.
  • Opsi autoload yang besar. Opsi bertanda autoload dimuat di setiap permintaan halaman. Plugin yang menyimpan data besar di sini membuat setiap halaman ikut berat.
  • Tabel dan opsi sisa plugin yang sudah dihapus tapi tidak membersihkan datanya.
  • Log dan data statistik dari plugin keamanan, formulir, atau analitik yang menyimpan catatan di database.

Bagaimana cara tahu tabel mana yang paling besar?

Jangan langsung menghapus. Lihat dulu ukurannya. Di phpMyAdmin, buka database website, lalu urutkan kolom ukuran tabel. Kalau punya akses SSH dan WP-CLI, perintah ini menampilkan ukuran per tabel:

wp db size --tables

Hasilnya biasanya langsung menunjuk pelaku. Kalau wp_posts dan wp_postmeta paling besar, curigai revisi. Kalau wp_options membengkak, curigai transient dan autoload. Kalau ada tabel dengan awalan nama plugin yang sudah lama tidak dipakai, itu kandidat sisa plugin.

Langkah membersihkan database dengan aman

  1. Backup database dan pastikan file backup bisa dibuka. Semua langkah di bawah menghapus data secara permanen.
  2. Hapus transient kedaluwarsa dengan wp transient delete --expired. Transient memang data sementara, jadi aman dihapus. Plugin akan membuat ulang bila perlu.
  3. Hapus revisi lama. Lewat WP-CLI: wp post delete $(wp post list --post_type=revision --format=ids) --force. Kalau revisinya puluhan ribu, jalankan bertahap atau pakai plugin pembersih yang memproses per bagian.
  4. Kosongkan komentar spam dan sampah dari menu Komentar.
  5. Periksa opsi autoload terbesar di phpMyAdmin dengan kueri di bawah.
  6. Hapus tabel sisa plugin hanya bila kamu yakin plugin itu sudah tidak dipakai, dan setelah backup.
  7. Optimalkan tabel dengan wp db optimize atau menu Optimize di phpMyAdmin supaya ruang kosong dikembalikan.

Kueri untuk melihat 20 opsi autoload terbesar (ganti wp_ bila awalan tabelmu berbeda):

SELECT option_name, LENGTH(option_value) AS ukuran
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto')
ORDER BY ukuran DESC
LIMIT 20;

Nilai on, auto-on, dan auto muncul di WordPress versi baru, sedangkan yes dipakai versi lama. Dari nama opsinya, kamu biasanya bisa menebak plugin pemiliknya. Jangan hapus opsi milik plugin yang masih aktif. Lebih aman cari pengaturan di plugin itu, atau tanyakan ke pengembangnya, karena menghapus opsi aktif bisa mereset pengaturan.

Bagaimana dengan metadata yatim di wp_postmeta?

Saat artikel, revisi, atau produk dihapus tanpa lewat WordPress (misalnya langsung dari database atau oleh plugin yang kurang rapi), metadata miliknya bisa tertinggal di wp_postmeta. Data ini disebut metadata yatim: tidak punya induk, tapi tetap memakan ruang. Untuk menghitungnya, jalankan kueri berikut di phpMyAdmin:

SELECT COUNT(*)
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;

Kalau hasilnya hanya puluhan, abaikan saja. Kalau ribuan atau lebih, plugin pembersih database umumnya punya opsi khusus untuk menghapusnya. Jalankan setelah backup, lalu cek website setelahnya. Hal yang sama bisa terjadi di wp_commentmeta dan wp_termmeta, jadi plugin pembersih biasanya memeriksa ketiganya sekaligus.

Cara membersihkan lewat plugin atau manual?

CaraCocok untukCatatan
Plugin pembersih databasePemilik website tanpa akses SSHMudah, tapi baca dulu apa yang akan dihapus
WP-CLIPengguna VPS atau hosting dengan SSHCepat dan bisa dijadwalkan
phpMyAdminCek ukuran tabel dan opsi autoloadKueri yang salah langsung berlaku, jadi wajib backup

Banyak pemilik website menggabungkan dua cara: plugin untuk pembersihan rutin, phpMyAdmin untuk menyelidiki tabel yang aneh.

Bagaimana supaya tidak membengkak lagi?

Batasi jumlah revisi lewat wp-config.php. Letakkan di atas baris "That's all, stop editing":

define( 'WP_POST_REVISIONS', 5 );

Angka 5 berarti WordPress hanya menyimpan lima revisi terakhir per artikel. Kamu juga bisa mengatur EMPTY_TRASH_DAYS bila ingin tempat sampah dikosongkan lebih cepat dari 30 hari.

Pastikan juga tugas terjadwal WordPress berjalan normal, karena pembersihan transient dan tempat sampah bergantung padanya. Penjelasannya ada di apa itu wp-cron. Kalau website tetap lambat setelah database bersih, cari penyebab lain lewat panduan kenapa WordPress lambat, dan pertimbangkan object cache seperti dibahas di page cache, object cache, dan Redis.

Terakhir, jadwalkan backup database otomatis di luar server website. Pembersihan rutin jadi jauh lebih tenang kalau kamu tahu selalu ada salinan kemarin.

Pertanyaan yang sering diajukan

Seberapa sering database WordPress perlu dibersihkan?

Untuk website kecil, sebulan sekali sudah cukup. Toko online atau website yang sering diperbarui bisa lebih sering, terutama untuk transient dan komentar spam.

Apakah menghapus revisi membuat artikel hilang?

Tidak. Yang dihapus hanya salinan lama. Versi artikel yang sedang tayang tetap ada. Kamu hanya kehilangan kemampuan kembali ke versi lama.

Kenapa ukuran database tidak langsung turun setelah data dihapus?

Beberapa jenis tabel tidak langsung melepas ruang kosong. Jalankan optimasi tabel lewat phpMyAdmin atau wp db optimize setelah pembersihan.

Sumber & referensi

Baca juga