Tối ưu database WordPress thủ công – xóa bloat, giảm kích thước MySQL

Sau một thời gian vận hành, cơ sở dữ liệu WordPress có thể trở nên cồng kềnh vì chứa nhiều dữ liệu thừa như bản nháp, revision, comment spam, transient… Việc tối ưu cơ sở dữ liệu bằng tay giúp bạn kiểm soát kỹ hơn và loại bỏ chính xác những thứ không cần thiết, đồng thời giảm đáng kể dung lượng MySQL và cải thiện tốc độ truy vấn.

Tối ưu database WordPress thủ công – xóa bloat, giảm kích thước MySQL

1. Kiểm tra dung lượng database hiện tại

Trước khi bắt đầu, bạn nên kiểm tra dung lượng các bảng trong MySQL bằng phpMyAdmin hoặc dòng lệnh:

SELECT table_name AS "Table", 
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)" 
FROM information_schema.TABLES 
WHERE table_schema = "ten_csdldb" 
ORDER BY (data_length + index_length) DESC;

Thay ten_csdldb bằng tên database của bạn.

2. Xóa revision cũ và bản nháp tự động

WordPress mặc định lưu rất nhiều bản revision cho mỗi bài viết. Để xóa chúng, bạn có thể dùng câu lệnh SQL sau:

DELETE FROM wp_posts WHERE post_type = 'revision';

Tiếp theo, xóa các bản nháp tự động không cần thiết:

DELETE FROM wp_posts WHERE post_status = 'auto-draft';

3. Dọn dẹp comment spam và chưa duyệt

Comment spam hoặc chờ kiểm duyệt quá lâu có thể chiếm nhiều dung lượng, đặc biệt với các site lớn. Bạn có thể xóa bằng lệnh sau:

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = '0';

4. Xóa dữ liệu từ plugin đã xóa

Sau khi gỡ plugin, đôi khi các bảng dữ liệu hoặc options của nó vẫn còn tồn tại. Bạn nên kiểm tra bảng wp_options:

SELECT option_name, autoload FROM wp_options WHERE autoload = 'yes';

Nếu thấy các dòng lạ từ plugin không còn dùng, bạn có thể xóa bằng:

DELETE FROM wp_options WHERE option_name = 'ten_option';

5. Dọn transient hết hạn

Transient là các giá trị tạm thời lưu trong bảng wp_options. Sau một thời gian, chúng có thể bị “rác hóa” nếu không xóa.

DELETE FROM wp_options WHERE option_name LIKE '%_transient_%';

Lưu ý: lệnh trên sẽ xóa toàn bộ transient, kể cả chưa hết hạn – nên tránh dùng nếu bạn đang dùng plugin cache phụ thuộc vào transient.

6. Tối ưu bảng MySQL

Sau khi xóa dữ liệu, dung lượng vẫn có thể không giảm ngay vì không gian chưa được giải phóng. Bạn cần tối ưu lại các bảng:

OPTIMIZE TABLE wp_posts;
OPTIMIZE TABLE wp_postmeta;
OPTIMIZE TABLE wp_comments;
OPTIMIZE TABLE wp_commentmeta;
OPTIMIZE TABLE wp_options;

Bạn cũng có thể dùng lệnh tối ưu toàn bộ:

mysqlcheck -o ten_csdldb -u root -p

7. Giảm autoload trong wp_options

Trường autoload trong wp_options nếu bị lạm dụng có thể gây chậm TTFB, đặc biệt nếu vượt quá 1MB. Bạn nên kiểm tra các option tự động load bằng:

SELECT option_name, length(option_value) AS size 
FROM wp_options 
WHERE autoload = 'yes' 
ORDER BY size DESC 
LIMIT 20;

Xóa hoặc đặt autoload = 'no' cho các option không cần thiết.

8. Lập kế hoạch dọn định kỳ (nếu không dùng plugin)

Bạn có thể đưa các câu lệnh SQL vào file shell script rồi dùng cron để chạy định kỳ (ví dụ mỗi tháng 1 lần). Tạo file cleanup-db.sh:

#!/bin/bash
mysql -u root -p'matkhau' -e "USE ten_csdldb;
DELETE FROM wp_posts WHERE post_type = 'revision';
DELETE FROM wp_posts WHERE post_status = 'auto-draft';
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_options WHERE option_name LIKE '%_transient_%';
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_comments, wp_commentmeta, wp_options;"

Thêm vào cron:

crontab -e
0 3 1 * * /root/cleanup-db.sh

9. Tổng kết

Việc tối ưu database WordPress thủ công không chỉ giúp giảm kích thước MySQL mà còn cải thiện tốc độ xử lý và giảm TTFB đáng kể. Dù hơi tốn công hơn so với việc dùng plugin, nhưng thao tác thủ công sẽ giúp bạn kiểm soát chính xác những gì đang được xóa và giữ lại. Nên kết hợp với backup định kỳ để đảm bảo an toàn dữ liệu.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...