Kenapa Database WordPress Saya Membengkak Setelah Bertahun-tahun?

Dipublikasikan pada

Ada satu hal yang biasanya baru kita sadari setelah sebuah website sudah berumur cukup panjang: website itu ternyata punya sejarah.

Bukan cuma artikel dan gambar yang kita lihat dari halaman depan.

Di belakangnya ada database yang menyimpan macam-macam hal. Ada artikel yang sudah kita hapus, revisi tulisan yang mungkin sudah tidak pernah kita lihat lagi, komentar, metadata, setting plugin, data sementara, sampai tabel-tabel peninggalan plugin yang entah kapan dulu pernah kita pasang.

Semakin lama WordPress dipakai, semakin banyak pula “jejak” yang ditinggalkan.

Saya baru benar-benar merasakan ini ketika kembali mengurus blog saya setelah sekian lama.

Blog ini sebenarnya bukan blog baru. Sudah bertahun-tahun hidup di hosting yang sama, melewati berbagai versi WordPress, berganti-ganti theme, mencoba berbagai plugin, dan tentu saja mengalami fase ketika saya sangat rajin menulis.

Kemudian datanglah fase yang mungkin dialami hampir semua blogger:

“Nanti saja update-nya.”

“Nanti” berubah menjadi beberapa minggu.

Beberapa minggu menjadi beberapa bulan.

Tahu-tahu sudah bertahun-tahun. ๐Ÿ˜…

Dan ketika akhirnya saya kembali membuka isi belakang blog, saya mulai melihat satu hal yang cukup menarik:

Database-nya sudah jauh lebih besar daripada yang saya bayangkan.


WordPress Itu Bukan Cuma wp_posts

Kalau baru mengenal WordPress, kita mungkin membayangkan database WordPress cukup sederhana.

Ada tabel artikel.

Ada tabel user.

Ada tabel komentar.

Selesai.

Kenyataannya tidak sesederhana itu.

Salah satu tabel yang paling terkenal adalah wp_posts. Namanya memang posts, tetapi isinya bukan cuma artikel.

WordPress menggunakan tabel ini untuk berbagai jenis konten. Artikel, halaman, attachment, bahkan beberapa custom post type dari plugin bisa ikut masuk ke sana.

Kemudian ada wp_postmeta.

Nah, di sinilah biasanya mulai menarik.

wp_postmeta berisi metadata yang berhubungan dengan konten. Dan plugin bisa menggunakan tabel ini untuk menyimpan berbagai macam informasi tambahan.

Satu artikel yang kita lihat di browser sebagai satu halaman sederhana bisa saja mempunyai cukup banyak metadata di belakangnya.

Belum lagi tabel lain seperti:

  • wp_options
  • wp_terms
  • wp_termmeta
  • wp_term_relationships
  • wp_comments
  • wp_commentmeta
  • dan berbagai tabel tambahan milik plugin.

Jadi ketika kita mengatakan:

“Blog saya cuma punya beberapa ratus artikel.”

Itu belum tentu berarti database-nya kecil.

Karena yang disimpan database bukan cuma apa yang terlihat oleh pengunjung.


Lalu, Kenapa Bisa Membengkak?

Ada beberapa penyebab.

Dan biasanya bukan satu penyebab saja.

Melainkan akumulasi dari bertahun-tahun.

1. Revisi Artikel

Ini salah satu tersangka klasik.

WordPress mempunyai fitur revision.

Setiap kali kita mengedit artikel, WordPress bisa menyimpan versi sebelumnya.

Misalnya hari ini saya menulis:

“WordPress adalah CMS.”

Kemudian saya edit menjadi:

“WordPress adalah salah satu CMS paling populer di dunia.”

Kemudian diedit lagi.

Kemudian diedit lagi.

Di layar kita mungkin hanya melihat versi terakhir.

Tetapi database bisa menyimpan histori revisi tersebut.

Kalau hanya satu atau dua revisi, tentu bukan masalah.

Masalahnya kalau blog sudah berumur bertahun-tahun dan memiliki banyak artikel yang berkali-kali diedit.

Ratusan artikel ร— banyak revisi = lumayan juga.

Apalagi kalau kita termasuk orang yang sering membuka artikel, mengubah satu kalimat, menyimpan, lalu beberapa menit kemudian mengubah lagi.

Database tidak tahu kalau perubahan itu menurut kita cuma “sedikit”.

Baginya:

“Oh, ada versi baru. Simpan.”


2. Plugin yang Sudah Tidak Dipakai

Ini yang menurut saya lebih menarik.

Kita blogger biasanya suka mencoba plugin.

Butuh SEO?

Install plugin SEO.

Butuh contact form?

Install contact form.

Butuh cache?

Install plugin cache.

Butuh statistik?

Install plugin statistik.

Butuh gallery?

Install gallery.

Kemudian beberapa bulan kemudian merasa plugin tersebut tidak cocok.

Plugin dihapus.

Selesai?

Belum tentu.

Menghapus plugin dari dashboard WordPress tidak selalu berarti seluruh data yang pernah dibuat plugin tersebut ikut hilang.

Tergantung bagaimana plugin tersebut dirancang.

Ada plugin yang bersih ketika di-uninstall.

Ada juga yang meninggalkan tabel database.

Ada yang meninggalkan option di wp_options.

Ada yang meninggalkan metadata.

Ada yang bahkan membuat tabel sendiri.

Akhirnya setelah bertahun-tahun kita bisa menemukan tabel seperti:

wp_xxxxx
wp_yyyyy
wp_zzzzz

dan kita mulai bertanya:

“Ini tabel apaan?”

Saya sendiri pernah berada di posisi tersebut.

Masalahnya, kalau kita sudah tidak ingat plugin apa yang dulu pernah dipasang, tabel tersebut menjadi semacam fosil digital.

Masih ada.

Tidak digunakan.

Tapi juga tidak berani langsung dihapus.


3. Plugin yang Terlalu Rajin Menulis ke Database

Ada juga plugin yang memang aktif sekali.

Plugin tertentu bisa menyimpan log, statistik, cache, histori aktivitas, atau data lainnya ke database.

Pada awalnya mungkin tidak terasa.

Satu hari cuma beberapa KB.

Satu minggu masih kecil.

Satu bulan masih aman.

Tetapi kalau bertahun-tahun?

Nah.

Di sinilah konsep yang sering kita abaikan:

data kecil yang terus bertambah pada akhirnya menjadi data besar.

Misalnya sebuah plugin menyimpan ribuan log setiap bulan.

Setahun sudah puluhan ribu.

Beberapa tahun kemudian jumlahnya bisa sangat banyak.

Website-nya sendiri mungkin tidak memiliki banyak artikel, tetapi database-nya bisa membengkak karena aktivitas di belakang layar.


4. wp_options Bisa Jadi Tempat Sampah

Salah satu tabel yang menurut saya cukup menarik untuk diperhatikan adalah:

wp_options

Tabel ini digunakan WordPress untuk menyimpan berbagai konfigurasi.

Theme menyimpan setting.

Plugin menyimpan setting.

WordPress sendiri menyimpan konfigurasi.

Masalahnya, plugin yang sudah tidak digunakan bisa saja meninggalkan option.

Jadi kalau selama bertahun-tahun kita sudah mencoba puluhan plugin, jangan kaget kalau wp_options penuh dengan nama-nama yang bahkan sudah tidak kita kenal.

Ada satu hal lagi yang menarik di sini, yaitu autoload.

Beberapa data pada wp_options ditandai untuk dimuat otomatis ketika WordPress berjalan.

Kalau jumlah data autoload terlalu besar, dampaknya bukan cuma database menjadi besar.

Performa WordPress juga bisa ikut terpengaruh.

Jadi kadang masalah WordPress yang terasa “lambat” bukan semata-mata karena hostingnya kurang bagus.

Bisa saja ada terlalu banyak sampah yang harus dibaca setiap kali WordPress bekerja.


5. Gambar Juga Punya Cerita Sendiri

Ini sedikit berbeda.

File gambar sebenarnya tidak disimpan sebagai file gambar di dalam database.

Gambar berada di filesystem, biasanya di:

wp-content/uploads/

Database lebih banyak menyimpan informasi tentang attachment tersebut.

Tetapi masalahnya bisa muncul kalau selama bertahun-tahun kita sering upload gambar dengan berbagai ukuran.

WordPress dan theme/plugin tertentu bisa membuat beberapa ukuran turunan dari satu gambar.

Misalnya kita upload satu foto:

foto.jpg

Kemudian bisa muncul:

foto-150x150.jpg
foto-300x200.jpg
foto-768x512.jpg
foto-1024x683.jpg

Dan seterusnya.

Jadi satu gambar yang kita pikir cuma satu file ternyata bisa menjadi beberapa file.

Kalau blog sudah bertahun-tahun dan punya ribuan gambar, folder uploads bisa menjadi sangat besar.

Belum lagi ada gambar yang sudah tidak digunakan tetapi masih tersimpan.

Ini juga pernah menjadi salah satu hal yang saya temui ketika mengurus blog lama.


Yang Lebih Menarik: Database Saya Ternyata Punya “Masa Lalu”

Ketika mengurus blog yang sudah lama, kita kadang menemukan hal-hal yang sudah hampir kita lupakan.

Misalnya tabel yang ternyata merupakan sisa instalasi lama.

Atau struktur database yang menunjukkan bahwa dulu website pernah menggunakan fitur tertentu.

Bahkan pernah ada kasus database WordPress saya yang masih menyisakan tabel-tabel dari konfigurasi lama.

Di situ saya baru sadar:

database ternyata menyimpan sejarah perjalanan sebuah website.

Kita sebagai pemilik mungkin sudah lupa.

Plugin sudah dihapus.

Theme sudah diganti.

Fitur sudah tidak digunakan.

Artikel sudah dihapus.

Tetapi jejaknya belum tentu ikut hilang.

Kalau website baru dibuat enam bulan lalu, mungkin masalah ini belum terasa.

Tetapi kalau website sudah hidup lima, tujuh, bahkan sepuluh tahun?

Cerita di belakangnya bisa panjang sekali.


Jangan Langsung Hapus Tabel yang Kelihatan Tidak Berguna

Ini bagian yang menurut saya paling penting.

Ketika melihat database penuh dengan tabel yang tidak dikenal, godaan pertama biasanya:

“Hapus saja.”

Jangan.

Setidaknya jangan sebelum tahu tabel tersebut digunakan oleh apa.

Database bukan tempat yang bagus untuk eksperimen asal-asalan.

Kalau salah menghapus tabel, dampaknya bisa lebih serius daripada database yang besar.

Langkah pertama yang lebih aman adalah identifikasi.

Cari tahu:

  1. Tabel tersebut dibuat oleh plugin apa?
  2. Plugin tersebut masih digunakan atau tidak?
  3. Apakah theme masih menggunakan data tersebut?
  4. Apakah tabel tersebut merupakan tabel WordPress standar?
  5. Apakah ada data penting di dalamnya?
  6. Apakah plugin menyediakan mekanisme uninstall untuk membersihkan datanya?

Kalau kita tidak tahu tabel itu apa, lebih baik jangan dihapus dulu.

Google juga bisa menjadi teman baik.

Cari nama tabelnya.

Misalnya:

wp_nama_tabel

Sering kali kita bisa menemukan dokumentasi plugin yang menjelaskan tabel tersebut.


Mulai dari Backup

Ini seharusnya tidak perlu saya tulis, tetapi tetap penting.

Sebelum melakukan pembersihan database:

backup.

Minimal backup database.

Kalau memungkinkan, backup seluruh website juga.

Dan jangan cuma merasa aman karena:

“Kan sudah ada backup hosting.”

Pastikan backup tersebut benar-benar bisa digunakan.

Backup yang belum pernah dicoba direstore sebenarnya masih menyisakan tanda tanya.

Karena masalah backup biasanya baru diketahui ketika kita benar-benar membutuhkannya.

Dan saat itu sudah terlambat untuk mengatakan:

“Lho, kok backup-nya tidak bisa direstore?” ๐Ÿ˜…


Jadi, Apakah Database Besar Itu Berarti Buruk?

Belum tentu.

Ini juga penting.

Database besar tidak otomatis berarti website buruk.

Yang lebih penting adalah:

apa yang membuat database tersebut besar?

Kalau memang datanya diperlukan, ya tidak masalah.

Website dengan ribuan artikel tentu wajar mempunyai database lebih besar dibandingkan website yang hanya memiliki sepuluh artikel.

Website dengan WooCommerce juga tentu mempunyai struktur database yang lebih kompleks.

Website dengan banyak pengguna, transaksi, komentar, log, dan aktivitas juga membutuhkan ruang.

Jadi jangan menggunakan angka ukuran database sebagai satu-satunya indikator.

Yang perlu dicari adalah:

“Apa yang sebenarnya memenuhi database ini?”

Itulah pertanyaan yang lebih berguna.


Cara Saya Mulai Investigasi

Kalau sekarang saya mendapatkan website WordPress lama dengan database yang besar, saya biasanya tidak langsung melakukan cleanup.

Saya akan mulai dengan melihat ukuran masing-masing tabel.

Dari situ biasanya mulai kelihatan siapa tersangkanya.

Misalnya ternyata:

wp_posts           20 MB
wp_postmeta       800 MB
wp_options         50 MB
wp_comments        10 MB
wp_plugin_logs    1.2 GB

Nah.

Dari sini kita sudah mendapatkan petunjuk.

Kalau wp_plugin_logs sampai 1,2 GB, tidak perlu menjadi detektif terlalu lama.

Tetapi kalau ternyata wp_postmeta sangat besar, kita harus mencari tahu metadata apa yang membuatnya besar.

Begitu juga dengan wp_options.

Jadi jangan mulai dengan:

“Bagaimana cara mengecilkan database?”

Mulailah dengan:

“Tabel mana yang paling besar dan kenapa?”

Menurut saya itu cara berpikir yang jauh lebih aman.


WordPress Lama Itu Seperti Rumah yang Sudah Ditinggali Bertahun-tahun

Kalau boleh dianalogikan, website WordPress yang sudah lama itu seperti rumah.

Awalnya rumah masih kosong.

Kemudian kita mulai memasukkan barang.

Ada meja.

Ada kursi.

Ada lemari.

Kemudian beli barang baru.

Barang lama dipindahkan.

Beberapa barang dibuang.

Tetapi ada juga barang yang sebenarnya sudah tidak dipakai namun masih disimpan di gudang.

Lima tahun kemudian kita buka gudang:

“Ini barang punya siapa?”

๐Ÿ˜…

Database WordPress kurang lebih seperti itu.

Semakin lama website hidup, semakin banyak sejarah yang tertinggal.

Dan kalau selama bertahun-tahun kita tidak pernah melakukan maintenance, jangan heran kalau akhirnya ada banyak “barang” yang sebenarnya sudah tidak diperlukan.


Setelah Bertahun-tahun, Maintenance Jadi Penting

Saya rasa ini salah satu pelajaran yang cukup penting dari mengurus website lama.

Ketika website masih baru, kita biasanya fokus pada:

“Yang penting website bisa online.”

Setelah beberapa tahun, fokusnya mulai berubah:

“Bagaimana supaya website tetap sehat?”

Update WordPress.

Update PHP.

Update plugin.

Backup.

Monitoring.

Membersihkan data yang sudah tidak diperlukan.

Memeriksa database.

Memeriksa filesystem.

Memeriksa error log.

Semuanya mulai menjadi bagian dari pekerjaan.

Dan semakin tua sebuah website, semakin penting maintenance tersebut.

Bukan karena WordPress tiba-tiba menjadi buruk.

Tetapi karena website yang hidup bertahun-tahun akan terus mengumpulkan perubahan.


Pada Akhirnya, Database Besar Bukan Musuh

Setelah melihat-lihat database blog lama saya, saya akhirnya melihatnya dari sudut pandang yang sedikit berbeda.

Database yang besar sebenarnya tidak selalu merupakan masalah.

Ia hanya menunjukkan bahwa website tersebut sudah menjalani perjalanan yang cukup panjang.

Ada artikel yang pernah ditulis.

Ada plugin yang pernah dicoba.

Ada theme yang pernah digunakan.

Ada konfigurasi yang pernah dibuat.

Ada fitur yang pernah aktif.

Ada banyak keputusan kecil yang dilakukan bertahun-tahun lalu.

Sebagian masih relevan.

Sebagian sudah tidak.

Dan pekerjaan kita sekarang adalah memilahnya.

Bukan sekadar:

“Bagaimana membuat database sekecil mungkin?”

Tetapi:

“Bagaimana memastikan database hanya menyimpan hal-hal yang memang masih dibutuhkan?”

Karena pada akhirnya, maintenance website bukan cuma soal menghemat megabyte.

Ini soal membuat sistem tetap rapi, mudah dipahami, aman, dan mudah dirawat ketika suatu hari nanti kita harus membongkar semuanya lagi.

Dan percaya atau tidak, biasanya momen “harus membongkar semuanya lagi” itu akan datang.

Seperti yang saya alami sekarang. ๐Ÿ˜„

Setelah sekian lama tidak mengurus blog, akhirnya saya kembali masuk ke belakang layar.

Dan ternyata bukan cuma artikel baru yang harus dipikirkan.

Ada masa lalu yang harus dibereskan juga.

Tinggalkan Komentar

Your email address will not be published. Required fields are marked *