Beberapa bulan setelah situs berjalan, dashboard mulai terasa berat. Halaman admin butuh waktu lebih lama untuk terbuka, dan query yang tadinya cepat kini merayap. Penyebabnya sering bukan hosting, melainkan tabel database yang menyimpan data sisa dari revisi, transien, dan metadata yang tidak pernah dibersihkan. Cara optimasi database WordPress berikut bisa dikerjakan sendiri lewat phpMyAdmin, WP-CLI, atau plugin.
1. Cadangkan Database Sebelum Menyentuh Apa Pun
Semua langkah di bawah mengubah isi tabel. Tanpa cadangan, satu query yang salah bisa menghilangkan data yang tidak bisa dipulihkan. Ekspor database lewat phpMyAdmin atau jalankan perintah berikut di terminal.
wp db export cadangan-sebelum-optimasi.sql
Simpan file hasil ekspor di luar folder public_html agar tidak bisa diunduh orang lain. Kalau situs punya data pelanggan atau pesanan, lakukan ekspor saat trafik sedang rendah agar isi tabel konsisten.
2. Bersihkan Revisi Postingan yang Menumpuk
Setiap kali menyunting artikel, WordPress menyimpan salinan revisi. Situs dengan puluhan penulis bisa mengumpulkan ribuan baris di tabel wp_posts hanya dari revisi. Batasi jumlah revisi lewat wp-config.php dengan menambahkan konstanta berikut.
define('WP_POST_REVISIONS', 5);
Setelah batas dipasang, hapus revisi lama. Di phpMyAdmin jalankan query yang memilih baris dengan post_type = 'revision', lalu hapus. Kalau memakai WP-CLI, perintah wp post delete $(wp post list --post_type=revision --format=ids) menghapus semuanya sekaligus.
3. Hapus Transien Kedaluwarsa
Transien menyimpan data sementara dari plugin cache, API eksternal, dan fitur bawaan WordPress. Sebagian besar punya masa berlaku, tetapi baris yang sudah kedaluwarsa tetap tertinggal di tabel wp_options sampai ada proses yang membersihkannya. Query berikut menghapus transien yang sudah lewat waktunya.
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
Untuk transien yang belum kedaluwarsa, gunakan perintah wp transient delete --expired. Jalankan pembersihan ini rutin, misalnya sebulan sekali, terutama kalau situs memakai banyak plugin yang memanggil API pihak ketiga.
4. Optimalkan Tabel dengan OPTIMIZE TABLE
Menghapus baris tidak otomatis mengecilkan ukuran file tabel di disk. MySQL menandai ruang kosong dan memakainya lagi untuk data baru, tetapi fragmentasi tetap terjadi. Perintah OPTIMIZE TABLE menulis ulang tabel dan merebut kembali ruang tersebut.
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options;
Untuk semua tabel sekaligus, WP-CLI menyediakan wp db optimize. Jalankan saat trafik sepi karena proses ini mengunci tabel sementara. Pada tabel berukuran gigabyte, operasinya bisa memakan waktu beberapa menit.
5. Kendalikan Autoload di Tabel Options
WordPress memuat semua opsi bertanda autoload pada setiap request. Kalau jumlahnya membengkak, setiap kunjungan menanggung beban query yang sama. Cek total ukurannya dengan query berikut.
SELECT SUM(LENGTH(option_value)) AS total_autoload
FROM wp_options WHERE autoload = 'yes';
Kalau angkanya sudah di atas beberapa megabyte, telusuri opsi mana yang paling besar. Plugin yang tidak aktif kadang meninggalkan baris autoload besar. Ubah nilainya menjadi no lewat wp option update nama_opsi --autoload=no kalau opsi itu tidak dibutuhkan di semua halaman.
6. Periksa Metadata Yatim
Menghapus postingan atau pengguna lewat antarmuka WordPress sering meninggalkan baris di wp_postmeta dan wp_usermeta yang tidak lagi punya induk. Query berikut menghitung sisa data tersebut.
SELECT COUNT(*) FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
Kalau hasilnya besar, hapus dengan DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts p ON p.ID = pm.post_id WHERE p.ID IS NULL. Lakukan hal serupa pada wp_usermeta dan wp_commentmeta. Setelah tabel bersih, jalankan ulang optimasi dari langkah keempat.
7. Rutinkan Pembersihan dan Pantau Dampaknya
Optimasi sekali jalan hanya menyelesaikan masalah sesaat. Tentukan jadwal pembersihan, catat ukuran database sebelum dan sesudahnya, lalu bandingkan waktu muat halaman. Kalau situs memakai object cache seperti Redis, kosongkan cache setelah pembersihan agar data lama tidak dipakai lagi. Untuk situs yang baru dipindahkan atau diubah strukturnya, atur juga struktur permalink agar tidak memicu query pencarian yang tidak perlu.
Kalau setelah semua langkah di atas situs masih lambat, masalahnya mungkin ada di kode tema atau plugin. Periksa fungsi yang berjalan di setiap request, terutama yang ditambahkan lewat functions.php. Query berat dari plugin yang jarang dipakai sebaiknya dinonaktifkan atau diganti.
Bagi yang mengelola beberapa situs sekaligus, pertimbangkan menyiapkan panel admin terpusat atau backend khusus untuk memantau kondisi database tiap instalasi. Panduan memilih platform backend untuk aplikasi iOS membahas pertimbangan serupa soal memilih lapisan data yang tidak membebani operasi harian.
Ringkasan
Database WordPress yang rapi membuat query lebih cepat dan halaman admin terasa lebih ringan. Mulai dari cadangan, bersihkan revisi dan transien, optimalkan tabel, kendalikan autoload, lalu jadwalkan pembersihan rutin. Kalau situs berjalan di lingkungan pengembangan sendiri, siapkan juga environment proyek yang terisolasi supaya uji coba query tidak menyentuh data produksi.
Pertanyaan yang Sering Diajukan
Apakah optimasi database bisa menghapus data penting?
Bisa, kalau query dijalankan tanpa memeriksa kondisi tabel. Selalu ekspor cadangan lebih dulu dan jalankan SELECT dengan klausa yang sama sebelum mengubahnya menjadi DELETE.
Seberapa sering sebaiknya membersihkan database WordPress?
Untuk situs dengan trafik dan pembaruan konten rutin, sebulan sekali sudah memadai. Situs dengan banyak plugin cache atau integrasi API mungkin perlu pembersihan transien setiap dua minggu.
Apakah plugin optimasi database aman dipakai?
Plugin populer umumnya aman selama mendukung versi WordPress yang dipakai dan tidak menghapus data di luar cakupannya. Tetap cadangkan database sebelum menjalankan pembersihan otomatis dari plugin.


