Setiap pemuatan halaman, pengiriman formulir, operasi plugin, dan sesi pengguna di WordPress melibatkan kueri basis data. Seiring waktu, basis data mengakumulasi beban: revisi pos lama, transien yang kedaluwarsa, metadata yatim, komentar spam, dan tabel yang tidak terpakai dari plugin yang dinonaktifkan. Pembengkakan ini memperlambat kueri, meningkatkan ukuran cadangan, dan menurunkan kinerja situs secara keseluruhan. Panduan ini mencakup cara mengidentifikasi pembengkakan basis data, membersihkannya dengan aman, dan mencegahnya kembali.
Apa yang Disimpan WordPress di Basis Data
Memahami apa yang ada di basis data Anda membantu Anda mengidentifikasi apa yang dapat dihapus dengan aman. Instalasi WordPress standar menggunakan 12 tabel inti, dan plugin menambahkan tabel mereka sendiri sesuai kebutuhan.
| Tabel | Menyimpan | Sumber Pembengkakan Umum |
|---|---|---|
| wp_posts | Pos, halaman, revisi, lampiran, jenis pos kustom | Revisi pos, draf otomatis |
| wp_postmeta | Metadata untuk pos (bidang kustom, data plugin) | Meta yatim dari pos yang dihapus |
| wp_options | Pengaturan situs, pengaturan plugin, transien | Transien yang kedaluwarsa, pengaturan plugin lama |
| wp_comments | Komentar dan trackback | Komentar spam, komentar yang dibuang |
| wp_commentmeta | Metadata untuk komentar | Metadata Akismet untuk komentar yang dihapus |
| wp_usermeta | Metadata pengguna | Token sesi, data pengguna plugin |
| wp_termmeta | Metadata untuk kategori dan tag | Metadata term yatim |
Sumber Umum Pembengkakan Basis Data
Revisi Pos
WordPress menyimpan revisi setiap kali Anda mengklik "Simpan Draf" atau "Perbarui" pada pos atau halaman. Sebuah pos yang diedit 50 kali memiliki 50 revisi yang disimpan di tabel wp_posts, masing-masing dengan set entri postmeta-nya sendiri. Di situs dengan ratusan pos, revisi dapat menyumbang ribuan baris basis data yang tidak perlu.
Transien
Transien adalah data sementara yang disimpan di tabel wp_options oleh inti WordPress dan plugin. Mereka memiliki waktu kedaluwarsa, tetapi WordPress tidak secara otomatis menghapus transien yang kedaluwarsa. Mereka mengakumulasi seiring waktu dan dapat memperbesar tabel opsi secara signifikan, terutama di situs dengan banyak plugin.
Data Yatim
Ketika Anda menghapus sebuah pos, metadata-nya (entri wp_postmeta) mungkin tidak dihapus. Demikian pula, menghapus komentar, pengguna, atau istilah dapat meninggalkan baris metadata yatim. Plugin yang dinonaktifkan dan dihapus sering meninggalkan tabel basis data mereka, mengonsumsi ruang dan mengacaukan basis data Anda.
Konten Spam dan Dibuang
Komentar spam, pos yang dibuang, dan komentar yang dibuang tetap berada di basis data hingga dikosongkan secara manual. Situs dengan Akismet atau filter spam lainnya mungkin mengakumulasi ribuan komentar spam yang perlu dibersihkan secara berkala.
Draf Otomatis
WordPress membuat pos draf otomatis ketika Anda mengklik "Tambah Baru" di editor pos, bahkan jika Anda tidak pernah menerbitkannya. Ini mengakumulasi seiring waktu dan tidak memiliki tujuan setelah sesi pengeditan berakhir.
Pembersihan Basis Data Manual melalui SQL
Bagi mereka yang nyaman dengan SQL, Anda dapat membersihkan langsung menggunakan phpMyAdmin atau klien basis data. Selalu cadangkan basis data Anda sebelum menjalankan kueri pembersihan.
Hapus Revisi Pos
-- Hapus semua revisi pos
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Hapus postmeta yatim (metadata untuk pos yang dihapus)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID ADALAH NULL;
Bersihkan Transien
-- Hapus transien yang sudah kedaluwarsa
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
-- Hapus data transien untuk transien yang sudah kedaluwarsa
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';
Hapus Komentar Spam dan Sampah
-- Hapus komentar spam
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- Hapus komentar yang dibuang
DELETE FROM wp_comments WHERE comment_approved = 'trash';
-- Hapus metadata komentar yang terasing
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;
Pembersihan Database Berbasis Plugin
Jika Anda lebih suka pendekatan berbasis GUI, beberapa plugin menangani optimasi database dengan kemampuan penjadwalan:
WP-Optimize
WP-Optimize adalah plugin gratis yang membersihkan revisi, draf, spam, transien, dan data yang terasing. Ini juga mengoptimalkan tabel database dan mendukung pembersihan terjadwal. Versi Pro menambahkan dukungan multisite dan penjadwalan lanjutan.
Optimasi Database WP Rocket
WP Rocket mencakup tab Database yang menangani revisi, auto-drafts, pos yang dibuang, komentar spam, transien, dan optimasi tabel. Karena WP Rocket terutama adalah plugin caching, Anda mendapatkan pembersihan database bersamaan dengan optimasi kinerja dalam satu alat.
Pembersih Database Lanjutan
Plugin ini lebih dalam dengan mendeteksi tabel yang ditinggalkan oleh plugin yang dinonaktifkan dan peristiwa cron yang terasing. Ini mengkategorikan tabel sebagai inti WordPress, dibuat oleh plugin, atau tidak dikenal, membantu Anda mengidentifikasi tabel mana yang aman untuk dihapus.
| Plugin | Versi Gratis | Pembersihan Terjadwal | Deteksi Tabel |
|---|---|---|---|
| WP-Optimize | Ya | Ya | Dasar |
| WP Rocket | Tidak (Premium saja) | Ya | Tidak |
| Pembersih Database Lanjutan | Ya | Hanya Pro | Ya (rinci) |
Optimasi wp-config.php
Cegah pembengkakan database dari sumbernya dengan menambahkan konstanta ini ke file wp-config.php Anda:
Batasi Revisi Pos
// Simpan hanya 5 revisi per pos (disarankan)
define( 'WP_POST_REVISIONS', 5 );
// Nonaktifkan revisi sepenuhnya (tidak disarankan untuk sebagian besar situs)
define( 'WP_POST_REVISIONS', false );
Menetapkan revisi ke 5 memberikan cukup sejarah untuk memulihkan dari kesalahan sambil mencegah pertumbuhan revisi yang tidak terbatas. Untuk situs yang padat konten dengan pengeditan yang sering, 10 revisi adalah alternatif yang wajar.
Auto-Kosongkan Sampah
// Kosongkan sampah setiap 7 hari (default adalah 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Nonaktifkan sampah (item dihapus segera - gunakan dengan hati-hati)
define( 'EMPTY_TRASH_DAYS', 0 );
Interval Autosave
// Tingkatkan interval autosave menjadi 5 menit (default adalah 60 detik)
define( 'AUTOSAVE_INTERVAL', 300 );
Optimasi Tabel Database
Setelah menghapus baris, jalankan operasi OPTIMIZE untuk mengambil kembali ruang yang terfragmentasi:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;
Jadwalkan ini setiap bulan atau setelah operasi pembersihan besar. Sebagian besar plugin pembersihan menyertakan optimasi tabel dalam tugas terjadwal mereka.
Jadwal Pembersihan Otomatis
Atur jadwal otomatis: pembersihan sementara dan spam mingguan, penghapusan revisi bulanan dan optimasi tabel, serta audit triwulanan untuk tabel plugin yang tidak terpakai. WP-Optimize dan WP Rocket keduanya mendukung pembersihan terjadwal. Konfigurasikan mereka selama jam sepi.
Memantau Ukuran Database
Pantau ukuran database Anda untuk mendeteksi pembengkakan lebih awal. Jalankan kueri ini untuk melihat ukuran tabel individu:
SELECT table_name AS 'Tabel',
ROUND(data_length / 1024 / 1024, 2) AS 'Data (MB)',
table_rows AS 'Baris'
FROM information_schema.tables
WHERE table_schema = 'nama_database_anda'
ORDER BY (data_length + index_length) DESC
LIMIT 20;
Jika wp_options melebihi 5 MB atau wp_postmeta tumbuh lebih dari 100 MB, saatnya untuk pembersihan. Tabel-tabel ini sering di-query, sehingga ukurannya langsung mempengaruhi waktu muat halaman.
Untuk pendekatan optimasi kinerja yang komprehensif yang mencakup optimasi database bersamaan dengan caching, optimasi gambar, dan konfigurasi server, baca panduan optimasi kecepatan WordPress. Untuk kesehatan database yang berkelanjutan sebagai bagian dari rutinitas pemeliharaan Anda, lihat panduan pemeliharaan WordPress.
Untuk detail lebih lanjut, silakan merujuk ke dokumentasi resmi: API Database WordPress.
Pertanyaan yang Sering Diajukan
Apakah aman untuk menghapus revisi pos dari database?
Ya, menghapus revisi pos aman dan tidak mempengaruhi konten yang telah dipublikasikan. Revisi adalah snapshot historis dari perubahan draf. Setelah konten Anda final, revisi tidak memiliki tujuan untuk sebagian besar situs. Namun, selalu cadangkan database Anda sebelum melakukan pembersihan.
Apakah optimasi database akan meningkatkan kecepatan situs saya secara signifikan?
Peningkatan tergantung pada seberapa bengkak database Anda. Situs dengan lebih dari 50.000 baris yang tidak terpakai atau tabel wp_options yang melebihi 10 MB akan melihat peningkatan yang signifikan dalam waktu muat halaman dan responsivitas dasbor admin. Situs yang lebih kecil mungkin melihat peningkatan yang marginal. Optimasi database bekerja bersamaan dengan caching dan langkah-langkah kinerja lainnya untuk perbaikan kumulatif.
Seberapa sering saya harus mengoptimalkan database WordPress saya?
Untuk situs aktif dengan pembaruan konten reguler, optimasi bulanan adalah baseline yang baik. Situs dengan lalu lintas tinggi yang sering mendapatkan komentar, transaksi WooCommerce, atau pengiriman formulir mungkin mendapatkan manfaat dari pembersihan sementara dan spam mingguan dengan optimasi tabel bulanan.
Apakah plugin pembersihan database dapat merusak situs saya?
Plugin yang terpercaya seperti WP-Optimize dan WP Rocket dirancang untuk aman. Mereka menargetkan kategori pembengkakan yang diketahui (revisi, sementara, spam) dan tidak menyentuh data penting. Risiko meningkat saat menghapus tabel spesifik plugin secara manual. Jika tidak yakin apakah tabel diperlukan, biarkan tetap ada dan teliti tujuannya terlebih dahulu.
Apa perbedaan antara OPTIMIZE TABLE dan menghapus baris?
Menghapus baris menghilangkan data dari tabel. OPTIMIZE TABLE mengatur ulang penyimpanan fisik tabel setelah baris dihapus, mengklaim kembali ruang disk dan mendefragmen file data. Anggaplah ini seperti menghapus file (menghapus baris) dibandingkan dengan mendefrag hard drive Anda (mengoptimalkan tabel).
Haruskah saya menggunakan InnoDB atau MyISAM untuk tabel WordPress?
WordPress menggunakan InnoDB secara default sejak versi 5.5, dan ini adalah mesin penyimpanan yang direkomendasikan. InnoDB mendukung penguncian tingkat baris (lebih baik untuk pengguna bersamaan), transaksi, dan pemulihan dari kegagalan. MyISAM lebih cepat untuk operasi baca berat tetapi tidak memiliki fitur keandalan ini. Jika Anda menemukan tabel MyISAM di database Anda, umumnya disarankan untuk mengonversinya ke InnoDB.
Bagaimana cara saya mengidentifikasi tabel yang ditinggalkan oleh plugin yang dinonaktifkan?
Plugin Advanced Database Cleaner dapat mendeteksi dan mengkategorikan tabel non-inti. Sebagai alternatif, jalankan kueri SQL SHOW TABLES dan bandingkan nama tabel dengan tabel inti WordPress dan plugin Anda yang saat ini aktif. Tabel dengan awalan yang cocok dengan plugin yang dinonaktifkan adalah kandidat untuk dihapus.
Apakah WooCommerce menambah pembengkakan database yang signifikan?
Ya. WooCommerce menyimpan data pesanan, metadata produk, sesi pelanggan, dan sementara yang tumbuh secara substansial di toko aktif. Gunakan WooCommerce > Status > Alat untuk secara teratur menghapus sementara dan sesi yang kedaluwarsa.
Optimalkan Kinerja dari Setiap Sudut
WP Rocket menangani caching, pembersihan database, dan optimasi kinerja dalam satu plugin, sehingga Anda dapat menjaga situs Anda tetap berjalan lancar.
Jelajahi WP Rocket →


