MITOM

← Danh sách bài viết

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:

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ảngChức năng
wp_postsBài viết, trang, custom post type
wp_postmetaMetadata của bài viết
wp_commentsBình luận
wp_commentmetaMetadata của bình luận
wp_terms, wp_term_taxonomy, wp_term_relationshipsDữ liệu phân loại (tags, category)
wp_optionsCài đặt website, plugin, theme
wp_users, wp_usermetaNgười dùng và metadata
wp_linksDữ 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:

  1. Plugin đã xóa nhưng vẫn để lại dữ liệu.
  2. Bản nháp, bản tự lưu (revision, autosave) chiếm chỗ.
  3. Spam, bình luận chưa duyệt.
  4. Transients (cache tạm thời) không được xóa.
  5. Dữ liệu autoload trong wp_options quá nặng.
  6. WooCommerce log, scheduled actions, session cũ.
  7. 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-OptimizeDọn DB + cache + nén ảnhCó auto cleanup định kỳ
WP-SweepDọn orphan meta, revisionDùng hàm gốc WP, rất an toàn
Advanced Database CleanerXóa cron, option mồ côi, bảng cũBản Pro rất mạnh
PerfmattersCó tab Database riêngCó thể giới hạn revision
WP RocketCó tính năng tối ưu DB sẵnTích hợp backup tự động

Ví dụ với WP-Optimize

7. Quy Trình Gợi Ý Thực Tế

BướcHành độngCông cụ đề xuất
1Backup toàn bộ databaseUpdraftPlus / WP-CLI
2Xóa transients & autoload rácSQL / WP-CLI / WP-Optimize
3Xóa meta mồ côiWP-Sweep / SQL
4Dọn WooCommerce (logs, sessions, actions)SQL thủ công
5Gỡ bảng plugin cũphpMyAdmin
6Tối ưu bảngWP-CLI hoặc phpMyAdmin
7Kiểm tra lại kích thước DBWP-Optimize / phpMyAdmin

Mẹo & Lưu Ý Nâng Cao

8. Kiểm Tra Hiệu Suất Sau Khi Dọn

Sau khi dọn database:

Dụng cụ kiểm tra:

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.”

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:

Trải nghiệm tốt nhất từ thực hành — Anh Nguyen

← Danh sách bài viết
  • Triển khai Blog Astro + CI/CD Đa Nền Tảng

    Triển khai Blog Astro + CI/CD Đa Nền Tảng

    Bài viết mình tổng hợp toàn bộ quá trình triển khai blog cá nhân với Astro (sử dụng Sveltia CMS), multi deploy, CI/CD GitHub Actions, cache busting, multi host (GitHub Pages + Vercel + Render + Netlify + DO + Cloudflare + Neocities + Surge + Wasmer)… từ A → Z.

  • So Sánh toàn diện LocalWP, MAMP, Laragon, XAMPP và WAMP Server Trên Windows

    So Sánh toàn diện LocalWP, MAMP, Laragon, XAMPP và WAMP Server Trên Windows

    Bạn đang tìm môi trường local để phát triển PHP hoặc WordPress trên Windows? Bài viết này sẽ giúp bạn hiểu rõ sự khác biệt giữa LocalWP, Laragon, MAMP, XAMPP, và WAMP Server – để chọn ra công cụ tối ưu nhất cho quy trình làm việc của bạn.

  • Công cụ mã nguồn mở kích hoạt Windows và Office kèm tính năng debug nâng cao

    Công cụ mã nguồn mở kích hoạt Windows và Office kèm tính năng debug nâng cao

    Hỗ trợ các phương thức kích hoạt như HWID, Ohook, KMS38 và Online KMS. Công cụ này cung cấp khả năng xử lý sự cố mạnh mẽ và kích hoạt sản phẩm Microsoft hiệu quả, đáp ứng nhiều nhu cầu người dùng theo cách linh hoạt, có thể tùy biến.

  • Plugin tối ưu ảnh tốt nhất cho Wordpress là gì? Optimole vs ShortPixel vs Imagify vs EWWW vs Smush

    Plugin tối ưu ảnh tốt nhất cho Wordpress là gì? Optimole vs ShortPixel vs Imagify vs EWWW vs Smush

    Đâu là plugin tối ưu ảnh tốt nhất cho Wordpress WooCommerce & blog nhiều ảnh? So sánh thực chiến Optimole, ShortPixel, Imagify, EWWW, Smush - Mình sẽ đi từ phương pháp test → kết quả → phân tích từng plugin → xếp hạng & khuyến nghị theo use case (online store, blog nhiều ảnh).

  • Những cách đơn giản để kích hoạt Windows 11 miễn phí mà không cần product key

    Những cách đơn giản để kích hoạt Windows 11 miễn phí mà không cần product key

    Chia sẻ kích hoạt Windows 11 bằng key KMS client miễn phí gồm các bước hoàn toàn giống với hướng dẫn cách kích hoạt Windows 10 miễn phí, chỉ khác là lần này mình thực hiện trên Windows 11.

  • Miễn phí 9 nền tảng headless CMS lưu trữ trên Git cho các Blog website đơn giản

    Miễn phí 9 nền tảng headless CMS lưu trữ  trên Git cho các Blog website đơn giản

    Đây là một chủ đề cực kỳ hữu ích cho các dev hiện đại, đặc biệt là những ai đang chuyển từ WordPress sang mô hình headless CMS. Nếu CMS truyền thống là tất cả trong một (cả backend lẫn frontend), thì headless CMS chỉ tập trung vào phần quản lý nội dung (backend), còn phần hiển thị (frontend) sẽ do bạn tự do chọn framework hoặc build theo ý muốn.