1. Kiểm tra kích thước các bảng
Bắt đầu bằng việc kiểm tra xem bảng nào chiếm nhiều dung lượng nhất. Bạn có thể dùng công cụ như phpMyAdmin hoặc lệnh SQL sau:
SHOW TABLE STATUS LIKE 'wp_%';
Tập trung kiểm tra các bảng như:
wp_options: chứa cấu hình site và có thể bị phình to vì dữ liệu autoloadwp_postmeta: chứa dữ liệu tùy biến, thường bị lặp hoặc rác do pluginwp_comments: chứa bình luận spam nếu không được kiểm duyệt kỹ
2. Xóa dữ liệu không cần thiết
- Bản nháp tự động: được WordPress tạo mỗi vài phút
- Revision: các bản lưu trước đó của bài viết
- Transients: dữ liệu cache hết hạn không bị xóa
- Spam/trash comments: nếu không được xử lý định kỳ
Sử dụng WP-CLI là cách tốt và an toàn:
wp post delete $(wp post list --post_type='revision' --format=ids) --force
wp transient delete --expired
wp comment delete $(wp comment list --status=spam --format=ids) --force
3. Dọn dẹp bảng wp_options
wp_options có thể chứa hàng nghìn dòng dữ liệu autoload = yes nhưng không còn dùng tới. Những dòng này được load vào mỗi lần truy cập trang chủ, ảnh hưởng lớn đến hiệu suất.
Kiểm tra 20 dòng có autoload cao nhất:
SELECT option_name, length(option_value) AS size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;
Nếu phát hiện dữ liệu từ plugin đã gỡ bỏ, bạn nên xóa nó đi.
4. Index hóa và chuẩn hóa cột
Một số plugin tạo meta query lặp đi lặp lại, nhưng bảng wp_postmeta mặc định không được index hiệu quả. Bạn có thể thêm index như sau:
ALTER TABLE wp_postmeta ADD INDEX meta_key (meta_key(191));
Nếu có plugin search nâng cao (như FacetWP, SearchWP), việc thêm index là rất cần thiết.
5. Tối ưu bảng bằng OPTIMIZE TABLE
Sau khi xóa dữ liệu rác, hãy tối ưu lại cấu trúc vật lý bảng:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;
Hoặc với WP-CLI:
wp db optimize
6. Giám sát bằng plugin hoặc code tùy chỉnh
Một số plugin hữu ích:
- Query Monitor: phát hiện truy vấn chậm hoặc không index
- Advanced Database Cleaner: dọn revision, transient, v.v.
- WP-Optimize: cho phép tối ưu thủ công hoặc theo lịch
Nếu bạn là lập trình viên, có thể viết cron job để tự động dọn dẹp theo chu kỳ.
Kết luận
Sau nhiều năm vận hành, database WordPress có thể trở thành “núi rác” nếu không được dọn định kỳ. Việc tối ưu hóa đúng cách giúp giảm truy vấn, tiết kiệm RAM, cải thiện trải nghiệm người dùng và đặc biệt quan trọng nếu bạn đang dùng hosting hạn chế tài nguyên. Hãy dành thời gian audit và tối ưu định kỳ – đó là khoản đầu tư bền vững.
Bình luận