Nội dung được biên soạn lại từ Anh Nguyen - kèm nguồn bài viết (nếu có)
Nếu website WordPress của bạn ngày càng chạy ì ạch, vào admin chậm như rùa bò, hoặc mỗi lần backup phải chờ hàng chục phút — thủ phạm có thể nằm ở database đã phình to vì rác cũ. Plugin gỡ rồi nhưng dữ liệu vẫn còn, log và cron cũ vẫn chạy, transients đầy bảng wp_options… Tất cả âm thầm khiến website nặng nề hơn mỗi ngày.
Trong bài này, mình sẽ hướng dẫn toàn bộ quy trình dọn dẹp và tối ưu database WordPress cũ, từ thủ công (MySQL, phpMyAdmin, WP-CLI) đến tự động (plugin).

1. Trước Khi Bắt Đầu: Luôn Backup Toàn Bộ Website
Trước mọi thao tác, bắt buộc phải sao lưu (backup) cả website và database. Vì chỉ cần một lệnh sai là có thể mất sạch dữ liệu.
Cách đơn giản nhất:
- Dùng plugin: UpdraftPlus, WPvivid, hoặc All-in-One WP Migration.
- Hoặc dùng WP-CLI:
wp db export backup-before-clean.sql
2. Cấu Trúc Database WordPress (để hiểu bạn đang dọn gì)
WordPress mặc định có 11 bảng chính:
| Bảng | Chức năng |
|---|---|
wp_posts | Bài viết, trang, custom post type |
wp_postmeta | Metadata của bài viết |
wp_comments | Bình luận |
wp_commentmeta | Metadata của bình luận |
wp_terms, wp_term_taxonomy, wp_term_relationships | Dữ liệu phân loại (tags, category) |
wp_options | Cài đặt website, plugin, theme |
wp_users, wp_usermeta | Người dùng và metadata |
wp_links | Dữ liệu blogroll (ít dùng) |
Ngoài ra, mỗi plugin có thể thêm bảng riêng: WooCommerce (wp_woocommerce_sessions), Elementor (wp_e_submissions), Rank Math (wp_rank_math_*), v.v.
3. Vì Sao Database Của Bạn Ngày Càng Nặng?
Một số nguyên nhân phổ biến:
- Plugin đã xóa nhưng vẫn để lại dữ liệu.
- Bản nháp, bản tự lưu (revision, autosave) chiếm chỗ.
- Spam, bình luận chưa duyệt.
- Transients (cache tạm thời) không được xóa.
- Dữ liệu autoload trong
wp_optionsquá nặng. - WooCommerce log, scheduled actions, session cũ.
- Cron, log, meta mồ côi không còn cha.
4. Dọn Dẹp Database Thủ Công (bằng phpMyAdmin hoặc SQL)
Phương án này dành cho ai hiểu MySQL một chút — triệt để, mạnh mẽ, nhưng phải cực kỳ cẩn trọng.
🔸 Nhớ thay `wp` bằng prefix thật trong site của bạn._
(1) Xóa transients và option rác
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';
DELETE FROM wp_options WHERE option_name LIKE '_site_transient_%';
(2) Kiểm tra và giảm autoload nặng
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options WHERE autoload='yes'
ORDER BY size DESC LIMIT 50;
Nếu có option nào nặng hàng MB, hãy set lại:
UPDATE wp_options SET autoload='no'
WHERE option_name='ten_option' LIMIT 1;
(3) Xóa option cũ của plugin đã gỡ
DELETE FROM wp_options WHERE option_name LIKE 'rank_math_%';
DELETE FROM wp_options WHERE option_name LIKE 'elementor_%';
(4) Xóa dữ liệu “mồ côi” (orphaned meta)
-- postmeta mồ côi
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
-- commentmeta mồ côi
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON c.comment_ID = cm.comment_id
WHERE c.comment_ID IS NULL;
-- usermeta mồ côi
DELETE um FROM wp_usermeta um
LEFT JOIN wp_users u ON u.ID = um.user_id
WHERE u.ID IS NULL;
-- termmeta mồ côi
DELETE tm FROM wp_termmeta tm
LEFT JOIN wp_terms t ON t.term_id = tm.term_id
WHERE t.term_id IS NULL;
-- term_relationships mồ côi
DELETE tr FROM wp_term_relationships tr
LEFT JOIN wp_posts p ON p.ID = tr.object_id
WHERE p.ID IS NULL;
(5) WooCommerce – Xóa session, log, scheduled actions cũ
-- Session hết hạn
DELETE FROM wp_woocommerce_sessions
WHERE session_expiry < UNIX_TIMESTAMP();
-- Scheduled Actions hoàn tất >30 ngày
DELETE FROM wp_actionscheduler_actions
WHERE status IN ('complete','failed','canceled')
AND scheduled_date_gmt < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 DAY);
-- Log không còn action
DELETE l FROM wp_actionscheduler_logs l
LEFT JOIN wp_actionscheduler_actions a ON a.action_id = l.action_id
WHERE a.action_id IS NULL;
(6) Xóa bảng plugin cũ
Tìm bảng còn sót:
SELECT table_name FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name LIKE 'wp_%elementor\%';
Nếu chắc chắn không cần:
DROP TABLE wp_elementor_css, wp_e_submissions;
(7) Tối ưu lại bảng
Sau khi xóa rác, chạy:
OPTIMIZE TABLE wp_options, wp_posts, wp_postmeta, wp_comments, wp_commentmeta, wp_usermeta, wp_terms, wp_term_taxonomy, wp_term_relationships;
5. Dọn Bằng WP-CLI (Cách An Toàn & Nhanh Cho Dev)
Nếu server hỗ trợ WP-CLI, đây là lựa chọn cực an toàn.
(1) Lệnh cơ bản
# Xóa toàn bộ transients
wp transient delete --all
wp site transient delete --all
# Kiểm tra option autoload nặng
wp db query "SELECT option_name, LENGTH(option_value) AS size FROM wp_options WHERE autoload='yes' ORDER BY size DESC LIMIT 50;"
# Tối ưu toàn bộ bảng
wp db optimize
# Liệt kê cron & xóa cron cũ
wp cron event list
wp cron event delete old_plugin_hook
(2) Backup trước khi dọn
wp db export before-clean.sql
6. Dọn Bằng Plugin (Cách Dễ Dành Cho Người Không Rành Kỹ Thuật)
Nếu bạn ngại SQL hoặc WP-CLI, hãy dùng plugin dọn dẹp an toàn. Dưới đây là 5 lựa chọn hàng đầu:
| Plugin | Điểm nổi bật | Ưu điểm |
|---|---|---|
| WP-Optimize | Dọn DB + cache + nén ảnh | Có auto cleanup định kỳ |
| WP-Sweep | Dọn orphan meta, revision | Dùng hàm gốc WP, rất an toàn |
| Advanced Database Cleaner | Xóa cron, option mồ côi, bảng cũ | Bản Pro rất mạnh |
| Perfmatters | Có tab Database riêng | Có thể giới hạn revision |
| WP Rocket | Có tính năng tối ưu DB sẵn | Tích hợp backup tự động |
Ví dụ với WP-Optimize
- Vào WP-Admin → WP-Optimize → Database.
- Tick chọn: xóa revision, spam, transient, draft cũ.
- Bấm
Run Optimization. - (Tuỳ chọn) bật “Schedule weekly optimization”.
7. Quy Trình Gợi Ý Thực Tế
| Bước | Hành động | Công cụ đề xuất |
|---|---|---|
| 1 | Backup toàn bộ database | UpdraftPlus / WP-CLI |
| 2 | Xóa transients & autoload rác | SQL / WP-CLI / WP-Optimize |
| 3 | Xóa meta mồ côi | WP-Sweep / SQL |
| 4 | Dọn WooCommerce (logs, sessions, actions) | SQL thủ công |
| 5 | Gỡ bảng plugin cũ | phpMyAdmin |
| 6 | Tối ưu bảng | WP-CLI hoặc phpMyAdmin |
| 7 | Kiểm tra lại kích thước DB | WP-Optimize / phpMyAdmin |
Mẹo & Lưu Ý Nâng Cao
- Giới hạn số revision:
define('WP_POST_REVISIONS', 5); - Tự động dọn định kỳ: chạy WP-CLI bằng cron mỗi tuần.
- Giữ autoload dưới 500KB để trang admin không lag.
- Không nên dùng nhiều plugin dọn cùng lúc.
8. Kiểm Tra Hiệu Suất Sau Khi Dọn
Sau khi dọn database:
- Dung lượng DB có thể giảm 30–70%.
- Thời gian load trang & truy vấn giảm rõ rệt.
- WP Admin phản hồi nhanh hơn hẳn.
Dụng cụ kiểm tra:
- Query Monitor (đếm số truy vấn).
- GTmetrix / PageSpeed Insights (so sánh thời gian load).
- WP Rocket Insights (đo Core Web Vitals sau tối ưu).
Dọn dẹp database không phải việc làm cho vui mà là một phần bảo trì bắt buộc nếu bạn muốn WordPress của mình sống lâu, chạy nhanh và ổn định.
Hãy nhớ:
“Database sạch – website khỏe – Google cũng thích.”
- Luôn backup trước.
- Chỉ xóa dữ liệu chắc chắn không còn dùng.
- Duy trì lịch dọn định kỳ (1–3 tháng/lần).
- Ưu tiên WP-CLI hoặc plugin có uy tín như WP-Optimize, Perfmatters.
Lời kết
Dọn database WordPress giống như dọn phòng làm việc: không phải việc ai cũng thích làm, nhưng sau khi làm xong, bạn sẽ thấy mọi thứ thở được hơn. Nếu bạn từng ngại dọn DB vì sợ lỗi, hãy thử theo đúng hướng dẫn trên. Mình đảm bảo site của bạn sẽ nhẹ hơn, nhanh hơn và sạch sẽ hơn hẳn.
Tham khảo thêm các bài viết sau:
- https://perfmatters.io/features/
- https://accelerawp.com/how-to-clean-up-the-wordpress-database/
- https://wpdatatables.com/wordpress-database-cleanup/
- https://wp-rocket.me/blog/make-wordpress-database-clean-whistle/
- https://www.wpbeginner.com/plugins/optimize-your-wordpress-database-with-one-click/
- https://onlinemediamasters.com/clean-wordpress-database/
- https://kiravo.net/clean-wordpress-database/
Trải nghiệm tốt nhất từ thực hành — Anh Nguyen
← Danh sách bài viết