Categories Database

Giới thiệu plugin Advanced Database Cleaner giúp tối ưu cơ sở dữ liệu WordPress

Làm sạch database (Cơ sở dữ liệu / CSDL) bằng cách loại bỏ các thành phần không hữu ích (*) như “các phiên bản cũ của bài viết / old revisions (**)”, “các bình luật spam“, thực hiện tối ưu hóa CSDL (cơ sở dữ liệu), vân vân.

(*): Từ gốc tiếng Anh là orphaned – nghĩa đen là trẻ mồ côi, ở đây nó ám chỉ rằng có một số dữ liệu không còn có mối liên quan nào đến các dữ liệu khác, vì vậy trở nên vô ích. Ví dụ một plugin bạn không dùng nữa- đã xoá khỏi website, nhưng database của nó vẫn còn, đó là orphaned, vì nó không còn mối liên hệ với các database còn lại.

(**): Các phiên bản cũ của bài viết không hẳn là tính năng vô dụng, nó giúp bạn khôi phục lại bài viết nào đấy nếu lỡ tay theo tác nhầm (chẳng hạn bạn xóa nhầm một đoạn). Nó giống như một dạng backup nội bộ của bài viết vậy. Tuy nhiên khi số lượng các phiên bản cũ quá nhiều, nó trở thành nguồn tài nguyên chiếm chỗ gần như vô ích, vì trong đa số trường hợp sẽ không cần thiết. Để tối ưu chúng ta sẽ cân bằng số lượng phiên bản cũ, cũng như thời gian lưu.

Nếu bạn đã sử dụng WordPress một thời gian dài thì bạn chắc chắn cần suy nghĩ về chuyện làm sạch CSDL. Thật vậy, CSDL của bạn có thể chứa đầy rác làm cho website cồng kềnh (bloated), chậm chạp. Rác có thể là các phiên bản cũ của bài viết, các meta post vô ích, các bình luận spam, vân vân. Bạn cần phải xóa sạch các dữ liệu không cần thiết này để giảm kích cỡ CSDL và cải thiện tốc độ cũng như hiệu suất của trang (P/S: một điều nữa mà có thể mọi người quên, tối ưu database, đặc biệt là trên các trang lớn còn là biện pháp giúp hạn chế downtime (***), nhờ thế duy trì được tính liền mạch và ổn định của website). Ngoài ra, bạn còn được hưởng lợi ích từ việc backup CSDL nhanh hơn vì file backup của bạn giờ đã nhỏ gọn hơn rồi.

(***): Bạn có thể theo dõi uptime của website thông các nhiều dịch vụ miễn phí chất lượng.

Advanced Database Cleaner là plugin mà bạn phải có, giúp bạn dọn dẹp CSDL, tối ưu hóa nó và nhiều bổ sung hữu ích khác nữa.


Các tính năng chính

  • Xóa các phiên bản cũ của bài post và page;
  • Xóa các phiên bản cũ lưu nháp tự động (auto draft);
  • Xóa các bài post lưu trong thùng rác (trash);
  • Xóa bình luận đang chờ xử lý (pending);
  • Xóa bình luận spam;
  • Xóa bình luận trong thùng rác;
  • Xóa các pingback;
  • Xóa các trackback;
  • Xóa các post metadata vô ích;
  • Xóa các bình luận metadata vô ích;
  • Xóa user metadata vô ích;
  • Xóa term metadata vô ích;
  • Xóa các mối quan hệ vô ích;
  • Xóa các transients quá hạn;
  • Hiển thị các thông tin về dữ liệu vô ích trước khi dọn dẹp CSDL, giúp bạn đảm bảo về những dữ liệu nào bạn muốn dọn dẹp;
  • Tìm kiếm và lọc tất cả các item dựa trên tên hoặc giá trị của chúng;
  • Lưu trữ dữ liệu x ngày không bị xóa: chỉ xóa dữ liệu nào cũ hơn so với số ngày cụ thể mà bạn đã chọn;
  • Lên lịch (schedule) dọn dẹp CSDL để nó chạy tự động;
  • Lên lịch nhiều tác vụ dọn dẹp theo yêu cầu của bạn và cụ thể hóa mục mà bạn muốn dọn dẹp thông qua việc lên lịch;
  • Tác vụ lên lịch có thể được thực thi dựa trên các tần suất khác nhau: Một lần, theo giờ, hai ngày một lần, hàng ngày, hàng tuần hoặc hàng tháng (cá nhân tôi thường bật một lần rồi tắt plugin đi, vì sau khi can thiệp CSDL, chúng ta cần kiểm tra lại website cùng các tính năng cơ bản của nó xem có bị ảnh hưởng gì không. Trường hợp bị ảnh hưởng rất hiếm khi xảy ra nhưng không phải không có nên phòng vẫn tốt hơn. Còn nếu bạn định lên lịch làm tự động, tôi nghĩ rằng tần suất hàng tuần hoặc hàng tháng là phù hợp – tôi nghiêng về hàng tháng hơn);
  • Hiển thị thông tin bảng CSDL, chẳng hạn như số lượng các hàng, kích cỡ bảng, vân vân;
  • Tối ưu hóa bảng CSDL (plugin sẽ nhắc bạn nếu có bất kỳ bảng nào cần tối ưu)
  • Sửa chữa các bảng CSDL bị hỏng (plugin sẽ nhắc bạn nếu có bất kỳ bảng nào bị hỏng);
  • Lên lịch tối ưu hóa CSDL và/hoặc sửa chữa để chạy hoàn toàn tự động và bạn có thể thực hiện các tác vụ này trên một bảng cụ thể mà bạn muốn;
  • Xóa các hàng trong bảng CSDL;
  • Dọn dẹp và xóa các bảng CSDL;
  • Hiển thị danh sách tùy chọn (options list);
  • Hiển thị thông tin tùy chọn như tên tùy chọn, giá trị tùy chọn, kích thước tùy chọn, tự động tải tùy chọn (option autoload);
  • Các tùy chọn dọn dẹp và xóa;
  • Thiết lập các tùy chọn tải tự động là no / yes;
  • Hiển thị danh sách các tác vụ cron đang kích hoạt (các tác vụ đã lên lịch) với các thông tin của chúng như đối số, lần chạy tiếp theo, vân vân;
  • Làm sạch và xóa các tác vụ được lên lịch tự động (sacheduled tasks);
  • Thân thiện và dễ sử dụng.

Thông qua việc sử dụng plugin Advanced Database Cleaner bạn sẽ:

  • Có cái nhìn tổng quan: Plugin sẽ giúp bạn có được cái nhìn tổng quan về chuyện gì đang diễn ra trong CSDL của bạn. Nó sẽ báo cáo tất cả các thành phần không sử dụng/vô ích mà bạn cần dọn dẹp, nó cũng cung cấp cho bạn số bảng/tùy chọn/tác vụ bạn đang có, vân vân. Bằng cách này, bạn có thể kiểm soát CSDL của bạn nếu có bất cứ điều gì bất thường xảy ra.
  • Tiết kiệm thời gian: Bạn có thể làm sạch/tối ưu hóa/sửa chữa thành phần cụ thể mà bạn muốn, số ngày dữ liệu mà bạn muốn giữ lại và tần số làm sạch/tối ưu hóa/sửa chữa. Plugin sẽ tự động xử lý quá trình này dựa trên các cài đặt của bạn.
  • Tiết kiệm không gian ổ cứng: Bằng cách xóa các thành phần không sử dụng/vô ích, bạn sẽ tiết kiệm được không gian dữ liệu của CSDL và làm quá trình backup diễn ra nhanh hơn so với trước đây.

Các tính năng nâng cao/pro của gói trả phí

Bạn có biết là ngay cả khi bạn đã xóa plugin/theme trong WordPress, một số dữ liệu dư thừa (leftovers) vẫn còn ở lại trong CSDL của bạn? Chẳng hạn các tùy chọn vô ích, các bảng vô ích hoặc các tác vụ cron vô ích. Không phải plugin/theme nào cũng được nhà lập trình phát triển để có khả năng để ý đến việc dọn dẹp CSDL của bạn đâu. Do vậy việc xóa bỏ plugin/theme theo thời gian sẽ tích lũy dữ liệu dư thừa trong CSDL và làm ảnh hưởng đến hiệu suất của website. Phiên bản nâng cao của plugin Advanced Database Cleaner sẽ giúp bạn loại bỏ tất các các thành phần dư thừa đó và thực hiện việc dọn dẹp sâu CSDL. Trong phiên bản pro bạn có thể:

  • Phân loại (classify) các tùy chọn dựa vào người tạo (creator). Chúng có thể là: các tùy chọn của plugin, các tùy chọn của theme (giao diện) hoặc các tùy chọn của WP core (lõi của WordPress)
  • Nhận biết (detect) và loại bỏ (delete) các tùy chọn vô ích. Bảng “wp_options” của bạn có thể chứa đầy các tùy chọn vô ích và vì thế có thể ảnh hưởng đến hiệu suất tải dữ liệu từ đó, cái có khả năng làm chậm website. Dọn dẹp các tùy chọn vô ích do vậy rất quan trọng
  • Phân loại các bảng dựa trên người tạo. Chúng có thể là: các bảng của plugin, các bảng của theme, hoặc các bảng của WP core
  • Nhận biết và loại bỏ các bảng vô ích. Đối với các tùy chọn, bạn cũng có thể có một số bảng vô ích được tạo bởi plugin/theme bạn không còn sử dụng nữa. Làm sạch các bảng vô ích sẽ làm giảm dung lượng CSDL của bạn
  • Phân loại tất cả các tác vụ cron (cron jobs) theo người tạo. Chúng có thể là: tác vụ cron của plugin, tác vụ cron của theme hoặc tác vụ cron của WP core
  • Nhận biết và loại bỏ các tác vụ cron vô ích. Sau khi bạn gỡ bỏ plugin/theme, một số tác vụ cron có thể vẫn kích hoạt làm cho WordPress gọi những hàm không cần thiết. Khi sử dụng phiên bản pro, bạn có thể nhận biết và làm sạch các tác vụ vô ích đó
  • Các tùy chọn tìm kiếm và lọc, lọc các bảng và lọc các tác vụ cron dựa trên một số đặc điểm như “name/tên”, “creator/người tạo”, “value/giá trị”, vân vân
  • Nhận hỗ trợ: nhóm tác giả sẽ hỗ trợ nhanh nhất có thể cũng như trả lời bất cứ vấn đề kỹ thuật nào để giúp bạn dọn dẹp CSDL một cách có hiệu quả

Hỏi đáp

1. “Làm sạch CSDL” có nghĩa là gì?

Khi bạn sử dụng WordPress, CSDL của bạn sẽ tích lũy rất nhiều dữ liệu dư thừa như các phiên bản cũ của bài viết, các bình luận spam, các bình luận trong thùng rác, vân vân. Loại bỏ các dữ liệu không cần thiết này sẽ giúp giảm kích cỡ CSDL, tăng tốc quá trình xử lý backup và cũng giúp đẩy nhanh tốc độ trang web.

2. Liệu có an toàn không khi làm sạch CSDL

Có, nó an toàn. Chúng tôi không chạy bất cứ đoạn mã nào có nguy cơ làm gián đoạn/phá hỏng website của bạn hoặc xóa bỏ các bài post, page, bình luận (đã duyệt). Dù vậy, để đảm bảo an toàn bạn nên luôn luôn có bản back up CSDL của bạn trước khi dọn dẹp. Đây không phải là một tùy chọn; nó là bắt buộc đấy ạ! An toàn lúc nào cũng tốt hơn là phải nói lời xin lỗi! (lời xin lỗi không giúp bạn khôi phục lại database, dù nó chân thành đến mức nào)

3. “Tối ưu hóa CSDL” có nghĩa là gì?

Tối ưu hóa CSDL sẽ lấy lại không gian không sử dụng (reclaim unused space) trong bảng của bạn, cái sẽ giúp làm giảm không gian lưu trữ và cải thiện hiệu quả trong việc truy cập bảng. Tối ưu hóa CSDL đôi khi có thể cải thiện đáng kể hiệu suất, đặc biệt khi trang web của bạn có nhiều người truy cập hoặc có lượng lớn nội dung. Tối ưu hóa CSDL rất an toàn.

4. Có an toàn không khi tôi dọn dẹp cron (tác vụ theo lịch trình)?

Một tác vụ theo lịch trình (scheduled task/cron jobs), cho phép plugin thực thi một số hành động tại một thời điểm cụ thể, mà không cần thao tác thủ công để thực thi mã vào thời điểm đó. Bản thân WordPress sử dụng một số tác vụ theo lịch trình để thực thi vài hành động lặp lại thường xuyên. Tuy vậy, một số tác vụ theo lịch trình có thể không bị loại bỏ cho dù plugin sử dụng nó đã bị xóa khỏi bản cài đặt WordPress. Như bạn đã biết, không phải tất cả plugin đều quan tâm đến việc dọn dẹp dữ liệu trong WordPress. Vì thế, loại bỏ các tác vụ không cần thiết này có thể giúp làm sạch trang web của bạn. Điều cần phải lưu ý là dọn dẹp các tác vụ theo lịch trình là an toàn miễn là bạn bạn biết các tác vụ nào đang được dọn dẹp (có nghĩa là bạn biết nhiệm vụ của cron jobs đó là gì). Nếu bạn không chắc chắn, tốt hơn là không dọn dẹp/loại bỏ bất cứ tác vụ nào.

5. “Revison” có nghĩa là gì? Đoạn mã SQL được dùng để loại bỏ nó?

WordPress lưu trữ một bản ghi (được gọi là “revision”) cho mỗi lần lưu nháp hoặc mỗi lần cập nhật được xuất bản. Hệ thống này cho phép bạn xem những thay đổi đã được thực hiện trong mỗi bài post và page qua thời gian. Tuy nhiên, điều này có thể tạo ra nhiều dữ liệu chìm/ẩn không cần thiết (unnecessary overhead) trong CSDL của bạn, vì nó tồn nhiều không gian lưu giữ. Truy vấn SQL được dùng bởi plugin để xóa bỏ tất cả các revision là:

DELETE FROM posts WHERE post_type = ‘revision’

6. “Lưu nháp lưu tự động” (Auto-draft) có nghĩa là gì? Đoạn mã SQL được dùng để xóa bỏ nó?

WordPress tự động lưu giữ các bài post/page của bạn khi bạn chỉnh sửa nó. Điều này được gọi là lưu nháp lưu tự động. Nếu bạn không nhấn nút publish/update (xuất bản/cập nhật), thì post/page sẽ lưu nó dưới dạng bản nháp tự động và bất kỳ chỉnh sửa nào trên bài post/page của bạn sẽ không hiển thị trên website đã xuất bản. Theo thời gian, bạn có thể có nhiều bản nháp lưu tự động mà bạn sẽ không bao giờ xuất bản và vì thế bạn có thể xóa chúng đi. Truy vấn SQL được plugin sử dụng để xóa bỏ tất cả các bản lưu nháp tự động là:

DELETE FROM posts WHERE post_status = ‘auto-draft’

7. “Bình luận chờ duyệt” có nghĩa là? Đoạn mã SQL được dùng để xóa bỏ nó?

Bình luận chờ duyệt là các bình luận được tạo ra bởi người dùng và đang chở bạn phê duyệt trước khi nó được hiển thị công khai trên website của bạn. Trong một số trường hợp, bạn sẽ phải xóa toàn bộ các bình luận này. Truy vấn SQL được sử dụng bởi plugin để xóa bỏ toàn bộ các bình luận chờ duyệt là:

DELETE FROM comments WHERE comment_approved = ‘0’

8. “Bình luận spam” có nghĩa là gì? Đoạn mã SQL được dùng để xóa bỏ nó?

Nó là các bình luận mà bạn (hoặc plugin nào đó) đánh giá là spam. Truy vấn SQL được plugin sử dụng để loại bỏ tất cả bình luận spam là:

DELETE FROM comments WHERE comment_approved = ‘spam’

9. “Bình luận rác” có nghĩa là gì? Truy vấn SQL nào được dùng để loại bỏ nó?

Bình luận rác là bình luận mà bạn đã xóa khỏi WordPress và đã được chuyển đến thùng rác (trash). Bình luận rác không hiển thị trên website và cần phải xóa vĩnh viễn. Truy vấn SQL được dùng bởi plugin để xóa tất cả các bình luận rác là:

DELETE FROM comments WHERE comment_approved = ‘trash’

10. “Trackback” có nghĩa là gì? Truy vấn SQL nào được sử dụng để loại bỏ nó?

Trackbacks cho phép bạn gửi thông báo (notify) đến các chủ website khác rằng bạn đã liên kết đến bài viết của họ trên website của bạn. Các trackbacks này có thể được sử dụng để gửi một lượng lớn spam. Các spammer sử dụng chúng để các liên kết của họ được đăng trên càng nhiều website càng tốt. Đó là lý do vì sao chúng nên được hủy kích hoạt/xóa bỏ nếu bạn không sử dụng chúng.  Truy vấn SQL được plugin sử dụng để loại bỏ các trackback là:

DELETE FROM comments WHERE comment_type = ‘trackback’

11. “Pingback” có nghĩa là gì? Truy vấn SQL nào được sử dụng để loại bỏ nó?

Pingbacks cho phép bạn thông báo với các chủ website khác biết rằng bạn đã liên kết đến bài viết của họ trên website của bạn. Pingbacks được thiết kế để giải quyết một số vấn đề mà mọi người đã quan sát thấy khi dùng trackbacks. Mặc dù có một số khác biệt kỹ thuật nhỏ, về cơ bản thì trackback và pingback giống nhau. Pingbacks có thế được sử dụng để gửi một lượng lớn spam. Đó là lý do vì sao chúng nên được hủy kích hoạt/xóa bỏ nếu bạn không sử dụng chúng.  Truy vấn SQL được plugin sử dụng để loại bỏ các pingback là:

DELETE FROM comments WHERE comment_type = ‘pingback’

12. “Post meta vô ích” có nghĩa là gì? Truy vấn SQL được dùng để loại bỏ nó?

Dữ liệu post meta là thông tin bạn cung cấp cho người đọc về mỗi bài post. Thông tin này thường bao gồm tác giả bài đăng, thời điểm nó được viết (hoặc được đăng), và cách tác giả phân loại bài post cụ thể đó (vào thư mục nào). Trong một số trường hợp, một số dữ liệu post meta trở nên vô ích và không thuộc về bất cứ bài post cụ thể nào. Chúng được gọi là “orphan postmeta / postmeta vô ích” và cần phải loại bỏ. Truy vấn SQL được sử dụng bởi plugin để loại bỏ tất cả postmeta vô ích là:

DELETE pm FROM postmeta pm LEFT JOIN posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL

13. “Meta bình luận vô ích” có nghĩa là gì? Truy vấn SQL được dùng để loại bỏ nó?

Giống như “Post meta vô ích”, ngoại trừ việc “meta bình luận vô ích” liên quan đến bình luận chứ không phải bài post. Truy vấn SQL được sử dụng bởi plugin để loại bỏ tất cả meta bình luận vô ích là:

DELETE FROM commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM comments)

14. “User meta vô ích” có nghĩa là gì? Truy vấn SQL được dùng để loại bỏ nó?

Dữ liệu user meta là thông tin bạn cung cấp cho người đọc về từng user. Thông tin này thường bao gồm dữ liệu bổ sung mà không được lưu giữ trong bảng người dùng của WordPress. Trong một số trường hợp, một số dữ liệu user meta trở nên vô ích và không thuộc về bất cứ user nào. Chúng được gọi là “usermeta vô ích” và cần phải loại bỏ do tính vô dụng của chúng. Truy vấn SQL được sử dụng bởi plugin để loại bỏ tất cả usermeta vô ích là:

DELETE FROM usermeta WHERE user_id NOT IN (SELECT ID FROM users)

15. “Term meta vô ích” có nghĩa là gì? Đoạn mã SQL được sử dụng để loại bỏ nó?

Dữ liệu meta data là thông tin được cung cấp cho từng term taxonomy. Thông tin này thường bao gồm dữ liệu bổ sung mà không được lưu trữ trong bảng term của WordPress. Trong một số trường hợp, một số thông tin dữ liệu term meta trở nên vô ích và không thuộc về bất cứ term taxonomy nào. Nếu rơi vào trường hợp đó chúng được gọi là “termmeta vô ích” và nên được loại bỏ do tính vô dụng của chúng. Truy vấn SQL được dùng bởi plugin để loại bỏ các termmeta vô ích là:

DELETE FROM termmeta WHERE term_id NOT IN (SELECT term_id FROM terms)

16. “Các mối quan hệ vô ích” có nghĩa là gì? Mã SQL được dùng để loại bỏ nó?

Đôi khi bảng wp_term_relationships trở nên cồng kềnh với nhiều mối quan hệ vô ích. Điều này đặc biệt hay xảy ra trong trường hợp bạn sử dụng trang web không phải cho mục đích blog mà là một dạng nội dung khác, ở đó các bài post được xóa định kỳ. Qua thời gian, bạn có thể có hàng ngàn mối quan hệ kỳ hạn cho bài post không còn tồn tại nữa, tiêu tốn nhiều không gian CSDL. Truy vấn SQL được dùng bởi plugin để xóa bỏ tất cả các mối quan hệ vô ích là:

DELETE FROM term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN (SELECT id FROM posts)

17. “Transient hết hạn” có nghĩa là gì?

Transients là cách lưu trữ dữ liệu cache tạm thời trong WordPress DB bằng cách đặt cho nó một cái tên và khung thời gian sau đó nó sẽ hết hạn và bị xóa. Điều này giúp cải thiện hiệu suất WordPress và tăng tốc website trong khi làm giảm tải cho máy chủ trên tổng thể. Transients hết hạn là transients tuy đã hết thời gian tồn tại trên lý thuyết nhưng vẫn tồn tại trong CSDL. Đây là những dữ liệu có thể xóa một cách an toàn. Dọn dẹp Transients giờ đã là một phần của WordPress core, kể từ phiên bản 4.9, vì thế bạn không cần dọn dẹp chúng thủ công nữa, trừ khi bạn có một nhu cầu đặc biệt nào đó.

18. Plugin này có tương thích với trang multisite?

Có, nó có tương thích với trang multisite. Cần phải lưu ý là chỉ trang chính trong mạng là có thể được dọn dẹp CSDL và các thành phần vô ích của tất cả mạng. Chúng tôi ngăn không cho các trang khác (trang không phải trang chính) dọn dẹp CSDL của bạn vì chúng tôi tin rằng chỉ người quản trị cấp cao nhất (super administrator – tham khảo thêm phân quyền trong WordPress) mới có quyền thực hiện chức năng này. CSDL của bạn thực sự quý giá!

19. Plugin này có tương thích với SharDB, HyperDB hoặc Multi-DB không?

Trên thực tế plugin này không tương thích với SharDB, HyperDB hoặc Multi-DB. Chúng tôi sẽ cố gắng làm nó tương thích trong các phiên bản sắp tới.

20. Plugin này có tự dọn dẹp bản thân nó sau khi gỡ bỏ không?

Chúng tôi làm công việc dọn dẹp trang WordPress của bạn, nên sẽ thật xấu hổ nếu plugin này không dọn dẹp chính bản thân nó sau khi được gỡ bỏ! Vâng, tất nhiên rồi, plugin này sẽ tự dọn dẹp chính nó và loại bỏ bất kỳ dữ liệu nào được sử dụng để lưu trữ các cài đặt của plugin một khi nó bị gỡ bỏ.

(Dịch từ bài giới thiệu plugin trên trang WordPress.Org)


Kinh nghiệm sử dụng thực tế

Tối ưu hóa cơ sở dữ liệu trong WordPress đúng là phần mà ngay cả những người có kinh nghiệm thường bỏ qua. Tôi biết cách tối ưu hóa hình ảnh cách đây 2 năm, plugin cache cách đây 3 năm, tối ưu CSS, JS cũng quãng thời gian đó, nhưng giờ mới thực sự tiến hành tối ưu hóa CSDL!

Cũng chẳng phải ngẫu nhiên mà câu chuyện lại thành ra như vậy, theo tôi người ta ít chú ý đến nó là vì:

  • Nó không trực quan, dễ thấy. CSDL giống như nội tạng của website, nó nằm sâu bên trong. Trong khi những thứ như hình ảnh hoặc ngay cả CSS hay JS bạn có thể thấy dễ dàng.
  • Tối ưu CSDL không thực sự quan trọng nếu website nhỏ hoặc/và mới thành lập. Bởi vì lúc này CSDL còn nhẹ nhàng, nó vẫn chưa bị ảnh hưởng bởi số lượng lớn nội dung hoặc việc thử nghiệm rất nhiều plugin theo thời gian.
  • Can thiệp vào CSDL có thể gây hậu quả nghiêm trọng nếu không làm đúng. Nhẹ thì mất dữ liệu, mà nặng thì website không truy cập được. Điều này dẫn đến hệ quả xoáy vòng là những bài viết hướng dẫn về tối ưu hóa tốc độ cho WordPress (nhất là với những người mới) thường không đề cập nhiều đến CSDL, họ chủ yếu chỉ nói ở phần rất nông là loại bỏ revision. Các biện pháp khác như tối ưu hóa ảnh, cache, tối ưu CSS, JS ít rủi ro hơn nhiều.

Ngay chính bản thân tôi khi nghĩ về tối ưu hóa CSDL lúc đầu cũng chỉ biết đến revision! Về sau mới biết có hàng tá vấn đề liên quan đến bảng dữ liệu dư thừa, các options và cron job thừa thãi.

Nguyên nhân hàng đầu cho rắc rối này là qua thời gian, rất nhiều giao diện, plugin đã được cài và gỡ trên website của chúng ta.

Bạn sẽ phát hiện ra là không chỉ những plugin bình thường, mà ngay cả những plugin nổi tiếng, được đánh giá cao vẫn thường để lại dữ liệu dư thừa chứ không dọn dẹp nó hoàn toàn sạch sẽ trong CSDL.

Còn dưới đây là hướng dẫn ngắn gọn và những phát hiện khác khi tôi dọn dẹp 2 website (tổng hai trang có hơn 1000 bài, và có tuổi đời mỗi trang trên 5 năm):

  • Có những trang có thể có rất nhiều revisons cũ: Một trang của tôi chỉ có hơn 250 bài viết nhưng có đến hơn 2000 revision! Tuy hơi ngạc nhiên nhưng cũng dễ hiểu, vì trang này được chăm chút nội dung rất nhiều. Một trang càng được để ý về nội dung, nó càng có xu hướng được chỉnh sửa nhiều, và do vậy làm tăng revison… Xóa revision cũ là tính năng có cả ở phiên bản trả phí lẫn miễn phí (thuộc tab General clean up).
  • Để thực hiện phân loại dữ liệu, hãy nhấn vào phần Scan: Ở bảng có Scan tables; ở tùy chọn có Scan options, ở Cron jobs có Scan tasks. Ví dụ bên dưới đây là của bảng:quét bảng
  • Có 5 phân loại dữ liệu về nguồn gốc của nó, bao gồm: WP, nghĩa là của WordPress. Themes nghĩa là của giao diện. Plugins nghĩa là của các plugin. Orphans, nghĩa là dữ liệu dư thừa. Cuối cùng Uncategorized nghĩa là vẫn Chưa phân loại. Ví dụ dưới đây cho thấy các bảng CSDL được Advanced Database Cleaner phân loại như thế nào trong một website:phân loại bảng
  • Có những bảng dư thừa có thể có dung lượng rất lớn: Chẳng hạn plugin EWWW tạo ra một bảng lên đến hơn 11 MB, chiếm khoảng 10% dung lượng CSDL của cả website. Một ví dụ khác, plugin Wordfence Security cũng tạo ra nhiều bảng dữ liệu khoảng 4 – 5 MB. Vấn đề là khi bạn đang cần dùng các plugin này thì dữ liệu trong MySQL như vậy không phải việc gì tệ hại, nhưng nếu đã gỡ bỏ đi rồi mà nó vẫn bỏ lại lượng dữ liệu lớn như thế thì không ổn chút nào. Cả 2 plugin tôi vừa nói đều nổi tiếng trong cộng đồng, đặc biệt là Wordfence Security với hơn 3 triệu lượt cài và hơn 3000 đánh giá 5 sao.
  • Trước khi xóa luôn dữ liệu luôn phải kiểm tra xem nó thuộc về plugin/theme nào: Lý do là công cụ phân loại mặc định của plugin Advanced Database Cleaner không hoàn hảo, do đó nếu bạn thấy nó phân loại là Orphans rồi bạn cứ thế xóa thì rất nguy hiểm. Phân loại của nó chỉ là bước đầu để bạn đỡ tốn thời gian thôi. Kiểm tra cũng đơn giản, bạn copy và đưa nó lên máy tìm kiếm để soi (sử dụng dấu nháy kép trong tìm kiếm nếu cần), hầu hết trường hợp (với tôi là hơn 70%) bạn sẽ có được câu trả lời chính xác.
  • Ví dụ về trường hợp được xác định là Orphans nhưng thực ra không phải: Hình dưới đây cho thấy Advanced Database Cleaner xác định puc_cron_check_updates-ad-inserter-pro là orphans, nhưng điều này không đúng, vì cron jobs này thuộc về plugin đang được kích hoạt trên website của tôi là Ad Inserter.xác định orphans nhầm
  • Nếu Orphans chưa chắc đã là Orphans thực thì trường hợp ngược lại cũng đúng: Điều ấy có nghĩa là một dữ liệu nào đấy được xác định là thuộc plugin đang được kích hoạt nhưng thực ra lại là dữ liệu dư thừa. Tuy nhiên điều này phải kiểm tra thật kỹ, bởi nếu bạn nhầm, bạn có thể làm hỏng chức năng của plugin.
  • Rắc rối thường nằm ở mục Options: Ít nhất đối với tôi, vì mẫu website đưa vào thử nghiệm không nhiều để dám khẳng định tổng quát. Trên cả hai trang của tôi, bảng (table) và cron jobs dư thừa không quá nhiều, do vậy không tốn thời gian để kiểm tra. Trong khi bảng options có đến hàng nghìn dòng (sự thật là một trong hai website của tôi có đến hơn 70 ngàn dòng ở phần options! May mắn là 97% trong số đó đến từ cùng một nguồn nên tôi dễ dàng xóa bỏ, chỉ để lại khoảng 1000 dòng để kiểm tra).options thường nhiều rắc rối nhất
  • Tận dụng chức năng tìm kiếm, lọc (filter): Giúp bạn rút gọn dữ liệu để dễ quan sát và kiểm tra hơn.ví dụ về tính năng lọc
  • Tận dụng chức năng Option name: Chức năng sắp xếp theo tên này có ích là vì các nguồn dữ liệu đến từ cùng plugin hoặc theme hay có phần tiền tố giống nhau, ví dụ: fontResizer_cookieTime, fontResizer_maxFontsize, fontResizer_minFontsize. Bạn có để ý đến tiền tố fontResizer xuất hiện ở cả 3 không?sắp xếp theo tên, phân nhóm theo kiểu dữ liệu
  • Nếu do dự thì đừng xóa!: CSDL giống như nội tạng của website, ảnh thì giống như kiểu tóc. Nếu chẳng may bạn cắt tóc xấu bạn vẫn sống bình thường được (bằng cách đội mũ). Nhưng sẽ không ai bình thường được cả nếu khi phẫu thuật bị người nào đó cắt nhầm dạ dày. So sánh để bạn thấy đừng liều với CSDL. Nếu do dự, đừng làm gì cả.
  • Tối ưu hóa xong thì nên tắt plugin đi: Trừ khi web của bạn rất lớn và sôi động (nhiều người ghé thăm, có nội dung mới thường xuyên, hoặc nhiều bình luận, vân vân) còn không thì nên tắt plugin này đi sau khi tối ưu, vài tháng dùng một lần là ổn. Nó giống như thiết bị quan trọng nhưng ít khi phải dùng, khi ấy dùng xong chúng ta thường cất nó kỹ để đỡ chiếm không gian.
  • Tối ưu hóa CSDL có được kết quả tốt nhất khi phối hợp công cụ tự động và việc tối ưu hóa thủ công: Bạn có thể tham khảo bài viết này về các kinh nghiệm tối ưu CSDL WordPress theo cách thủ công.

Bản pro của plugin này có đáng mua không?

Tôi nghĩ là có, đặc biệt nếu website của bạn là trang thương mại điện tử và vài năm rồi bạn chưa thực hiện tối ưu hóa CSDL.

Lý do?

Bản miễn phí của plugin này, cũng như các phiên bản miễn phí của plugin tương tự khác chỉ giới hạn ở tính năng dọn dẹp cơ bản như xóa revisons, bình luận spam, commentmeta, postmeta, usermeta, vân vân (vài cái trong số này có thể làm thủ công, không cần plugin). Còn các tính năng quan trọng hơn (và cũng khó hơn) như phân loại và tìm orphans ở table, options và cron jobs chỉ có ở phiên bản có phí mà thôi.

Ưu điểm của plugin trả phí này là cập nhật trọn đời, nó tính tiền dựa trên số lượng website bạn muốn sử dụng. Nếu muốn mua một bản, hãy truy cập website này: sigmaplugin.com/downloads/wordpress-advanced-database-cleaner

Chốt hạ: qua phần này chúng ta thấy rằng lựa chọn theme và đặc biệt là plugin để cài trên website rất quan trọng. Plugin chất lượng kém sẽ tạo ra nhiều rắc rối tiềm ẩn. Tất nhiên tôi không thể bảo bạn ngừng thử nghiệm plugin được – đó là lời khuyên ngớ ngẩn, nhưng bạn cần cẩn trọng hơn bằng cách xác định thật rõ ràng nhu cầu của website, lựa chọn tác giả uy tín và kiên quyết loại bỏ các tính năng không cần thiết.

P/S: Nếu bạn muốn loại bỏ hoàn toàn lo lắng về CSDL hãy thử plugin WP2Static, nó sẽ chuyển trang WordPress động của bạn thành tĩnh hoàn toàn, không PHP, không MySQL. Tuy rằng không phải website nào cũng phù hợp nhưng khi được áp dụng đúng nó đem lại cải thiện trên nhiều phương diện: tốc độ, uptime, bảo mật và chi phí.

Back to Top