NỘI DUNG
Hướng dẫn dọn dẹp database WordPress. Giúp tăng tốc và cải thiện hiệu suất hoạt động của website.
Để đảm bảo trang WordPress hoạt động nhanh, an toàn và gọn gàng, bạn có thể áp dụng các kỹ thuật dọn dẹp thủ công như tối ưu hóa bảng dữ liệu, xóa dữ liệu không dùng và loại bỏ bình luận rác. Kết hợp với các plugin chuyên dụng để tự động hóa quy trình, bạn cũng nên lập lịch dọn dẹp định kỳ và theo dõi kích thước cơ sở dữ liệu nhằm nâng cao trải nghiệm người dùng.
Khi trang web phát triển và nội dung ngày càng nhiều, cơ sở dữ liệu WordPress dễ bị lộn xộn bởi dữ liệu không cần thiết, làm giảm tốc độ và tăng rủi ro bảo mật. Bài viết này sẽ hướng dẫn các phương pháp dọn dẹp cơ sở dữ liệu WordPress hiệu quả nhất cùng các plugin hỗ trợ để cải thiện tốc độ và hiệu suất.
Cấu trúc Database của WordPress
Cấu trúc database WordPress thông thường sẽ có cấu trúc bao gồm 12 bảng chính và công dụng của từng bảng cụ thể như sau:
- Bảng wp_posts: Gồm các bài viết, trang, bài đăng tùy chỉnh,…
- Bảng wp_terms: Gồm các thẻ (tag) và danh mục (categories) của trang.
- Bảng wp_termmeta: Thường dùng để lưu trữ các metadata.
- Bảng wp_term_relationships: Có công dụng lưu các liên kết (relationships) giữa các bài đăng, link, link danh mục, thẻ, danh mục lại với nhau.
- Bảng wp_term_taxonomy: Chứa các mô tả về thẻ, danh mục, link nằm trong bảng chính wp_terms.
- Bảng wp_usermeta: Những thông tin meta về người dùng thường nằm trong bảng này.
- Bảng wp_users: Dùng để lưu trữ những thông tin về người dùng.
- Bảng wp_commentmeta: Chứa các thông tin meta đánh giá.
- Bảng wp_comments: Lưu trữ những nhận xét trên website.
- Bảng wp_links: Lưu trữ link đến blog.
- Bảng wp_options: Dùng để chứa các cài đặt.
- Bảng wp_postmeta: Lưu trữ các meta bài đăng.
Các mối quan hệ giữa các bảng chính trong cơ sở dữ liệu WordPress được thể hiện như sau:

Tại sao cần dọn dẹp cơ sở dữ liệu WordPress?
Cơ sở dữ liệu WordPress lưu trữ toàn bộ dữ liệu trang web, bao gồm bài viết, trang, bình luận, tệp đa phương tiện và thông tin người dùng. Khi trang web mở rộng, cơ sở dữ liệu có thể trở nên cồng kềnh với dữ liệu thừa, dẫn đến:
- Tốc độ tải trang chậm.
- Tiêu tốn nhiều tài nguyên máy chủ.
- Sao lưu và bảo trì mất nhiều thời gian.
- Ảnh hưởng đến hiệu quả bộ nhớ đệm.
- Tìm kiếm trên trang chậm hơn.
Lợi ích của việc dọn dẹp cơ sở dữ liệu:
- Tăng tốc độ và hiệu suất trang web.
- Nâng cao bảo mật.
- Tăng hiệu quả sao lưu và khôi phục.
- Giảm dung lượng lưu trữ.
- Giảm tải cho máy chủ.
Kiểm tra trước khi dọn dẹp
Trước khi dọn dẹp. Tôi sẽ chạy lênh sau để Benchmark
mysqlslap --concurrency=10 --iterations=5 --query="SELECT * FROM wp_posts LIMIT 10" --create-schema=database_cuaban -u database_cuaban -p
Kết quả trước khi thực hiện.
Benchmark
Average number of seconds to run all queries: 0.075 seconds
Minimum number of seconds to run all queries: 0.019 seconds
Maximum number of seconds to run all queries: 0.278 seconds
Number of clients running queries: 10
Average number of queries per client: 1
Cách dọn dẹp thủ công để tăng tốc cơ sở dữ liệu (qua phpMyAdmin)
Lưu ý quan trọng: Bạn hãy sao lưu dữ liệu trước khi thực hiện bất kỳ thao tác dọn dẹp nào. Để dự phòng sự cố phát sinh và có thể phục hồi lại.
Để thực hiện dọn dẹp thủ công, bạn cần truy cập bảng điều khiển WordPress và phpMyAdmin – công cụ quản lý cơ sở dữ liệu MySQL. Truy cập phpMyAdmin qua bảng điều khiển hosting hoặc plugin như WP phpMyAdmin.
Lưu ý: Các lệnh SQL dưới đây sử dụng tiền tố wp_
. Hãy thay đổi nếu cơ sở dữ liệu của bạn dùng tiền tố khác.
1. Tối ưu hóa bảng dữ liệu
Tối ưu hóa bảng giúp cải thiện hiệu suất cơ sở dữ liệu. Một số bảng cần chú ý hơn:
- Bảng thường xuyên cập nhật: Như bảng bài viết (wp_posts), bình luận (wp_comments), hoặc thông tin người dùng (wp_usermeta).
- Bảng kích thước lớn: Như wp_options hoặc wp_postmeta.
- Bảng có dư thừa (overhead): Đây là phần dung lượng không cần thiết trong bảng.
Cách thực hiện:
- Trong phpMyAdmin, chọn cơ sở dữ liệu WordPress.
- Chọn các bảng cần tối ưu từ danh sách bên trái, đánh dấu vào ô bên cạnh.
- Trong menu “With selected”, chọn Optimize table và nhấn Go.

2. Xóa dữ liệu không dùng
Dữ liệu không dùng tích tụ theo thời gian có thể làm cơ sở dữ liệu lộn xộn, bao gồm giao diện, plugin, tệp đa phương tiện, bài viết, trang và thẻ không sử dụng.
Để thực hiện bạn truy cập vào phpMyAdmin => Chọn database => SQL tại đây bạn sẽ nhập các câu lệnh tôi mô tả bên dưới.

2.1 Giao diện và Plugin không dùng
Chạy các lệnh sau để xóa theme/plugin không hoạt động trong phpMyAdmin
Theme (Giao diện)
DELETE FROM wp_options WHERE option_name LIKE 'template_%' OR option_name LIKE 'stylesheet_%';
- Mô tả: Lệnh này xóa các tùy chọn trong bảng wp_options liên quan đến giao diện WordPress, cụ thể là các mục có tên bắt đầu bằng template_ hoặc stylesheet_. Đây thường là dữ liệu của các giao diện không còn được kích hoạt. Giúp dọn dẹp dữ liệu giao diện không dùng, giảm kích thước cơ sở dữ liệu.
- Tác dụng: Giúp dọn dẹp dữ liệu giao diện không dùng, giảm kích thước cơ sở dữ liệu.
- Lưu ý: Chỉ xóa dữ liệu của giao diện không hoạt động, không ảnh hưởng giao diện hiện tại.
Plugins
DELETE FROM wp_options WHERE option_name = 'active_plugins';
- Lệnh này xóa tùy chọn active_plugins trong bảng wp_options, nơi lưu danh sách các plugin đang được kích hoạt trên trang WordPress.
- Tác dụng: Vô hiệu hóa tất cả plugin đang hoạt động. Tuy nhiên, điều này có thể gây lỗi nếu các plugin cần thiết bị tắt đột ngột.
- Lưu ý: Cần thận trọng, vì việc xóa tùy chọn này có thể làm trang web mất chức năng liên quan đến plugin. Nên sao lưu trước khi thực hiện.

2.2 Xoá media không dùng
DELETE FROM wp_posts WHERE post_type = 'attachment' AND post_parent = 0;
- Lệnh này xóa tất cả các tệp đa phương tiện (như hình ảnh, video) trong cơ sở dữ liệu WordPress, được lưu dưới dạng bài viết có post_type = ‘attachment’, nhưng không được gắn với bất kỳ bài viết hoặc trang nào (post_parent = 0).
- Tác dụng: Giúp dọn dẹp các tệp không sử dụng, giảm dung lượng cơ sở dữ liệu và tối ưu hiệu suất trang web.
- Lưu ý: Nên sao lưu trước khi chạy lệnh để tránh xóa nhầm dữ liệu quan trọng.

2.4 Xoá bài viết và trang nháp
- Xoá bài viết nháp
DELETE FROM wp_posts WHERE post_type = 'post' AND post_status = 'draft';
- Xoá trang nháp
DELETE FROM wp_posts WHERE post_type = 'page' AND post_status = 'draft';
2.5 Xoá thẻ(tag) không dùng
- Xác định thẻ không dùng:
Lệnh này truy vấn cơ sở dữ liệu WordPress để liệt kê tất cả các thẻ (post_tag) không được sử dụng (không gắn với bất kỳ bài viết nào). Nó kết hợp bảng wp_terms (lưu tên thẻ) và wp_term_taxonomy (lưu thông tin phân loại), tìm các thẻ có tt.count = 0 (tức là không có bài viết nào sử dụng).
SELECT * FROM wp_terms AS t
LEFT JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;

- Xoá thẻ không dùng
DELETE FROM wp_terms WHERE term_id IN (
SELECT term_id FROM wp_term_taxonomy WHERE count = 0
);
Lệnh này xóa tất cả các thẻ hoặc danh mục (terms) trong bảng wp_terms của WordPress mà không được sử dụng, được xác định bởi các mục trong bảng wp_term_taxonomy có count = 0 (tức là không gắn với bất kỳ bài viết, trang, hoặc nội dung nào).
2.6 Xoá bình luận rác
- Xác định bình luận rác
SELECT * FROM wp_comments WHERE comment_approved = 'spam';
- Xoá bình luận rác
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Lệnh này truy vấn bảng wp_comments trong cơ sở dữ liệu WordPress để liệt kê tất cả các bình luận được đánh dấu là rác (comment_approved = ‘spam’).
2.7 Xoá bản sửa đổi bài viết (revision)
DELETE FROM wp_posts WHERE post_type = 'revision';
- Lệnh này xóa tất cả các bản sửa đổi (revisions) của bài viết hoặc trang được lưu trong bảng wp_posts của cơ sở dữ liệu WordPress, được xác định bởi post_type = ‘revision’.
- Loại bỏ các bản sao lưu tự động của bài viết/trang, giúp giảm kích thước cơ sở dữ liệu.
- Tăng hiệu suất trang web bằng cách dọn dẹp dữ liệu không cần thiết.
2.8 Xóa pingback và trackback
- Xác định pingback và trackback
SELECT * FROM wp_comments WHERE comment_type = 'pingback' OR comment_type = 'trackback';
- Xoá
DELETE FROM wp_comments WHERE comment_type = 'pingback' OR comment_type = 'trackback';
Kiểm tra và xóa pingback/trackback giúp làm sạch cơ sở dữ liệu, cải thiện hiệu suất trang web.
2.9 Xóa transient
Transient là dữ liệu tạm giúp tăng tốc trang, nhưng nếu không dọn dẹp định kỳ, chúng có thể làm chậm trang.
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';
- Lệnh này xóa tất cả các transient (dữ liệu tạm thời) được lưu trong bảng wp_options của cơ sở dữ liệu WordPress, nhận diện bởi tên tùy chọn bắt đầu bằng _transient_. Transient là dữ liệu được lưu trữ tạm thời để tăng tốc trang web (như kết quả bộ nhớ đệm).
- Dọn dẹp dữ liệu tạm không còn cần thiết, giúp giảm kích thước cơ sở dữ liệu.
- Cải thiện hiệu suất trang web bằng cách loại bỏ transient hết hạn hoặc dư thừa.
- Lưu ý: Transient sẽ được tạo lại khi cần, vì vậy hãy dọn dẹp định kỳ.
Kiểm tra sau khi thực hiện
Sau khi thực hiện xong, tôi cũng chạy lại lệnh sau để Benchmark đến table posts
mysqlslap --concurrency=10 --iterations=5 --query="SELECT * FROM wp_posts LIMIT 10" --create-schema=database_cuaban -u database_cuaban -p
Và đây là kết quả. Từ kết quả cho thấy trước và sau đã có cải thiện khá nhiều.
Benchmark
Average number of seconds to run all queries: 0.015 seconds
Minimum number of seconds to run all queries: 0.012 seconds
Maximum number of seconds to run all queries: 0.019 seconds
Number of clients running queries: 10
Average number of queries per client: 1

Câu hỏi thường gặp
Do tích tụ dữ liệu như bản sửa đổi bài viết, bình luận rác, tệp đa phương tiện, giao diện/plugin không dùng. Một số plugin cũng tạo bảng riêng, làm tăng kích thước cơ sở dữ liệu.
Không. Nội dung như bài viết, trang, bình luận được lưu trong cơ sở dữ liệu, nhưng tệp đa phương tiện (hình ảnh, video) được lưu trên hệ thống tệp máy chủ. Một số plugin/giao diện có thể lưu dữ liệu bên ngoài cơ sở dữ liệu.