2023 rồi! ĐỪNG DÙNG MySQL trên website WordPress nữa!

Xin chào, Lại là Tuệ đây!

Hôm nay em xin chia sẻ quan điểm của mình về vấn đề chọn MariaDB hay MySQL trên góc nhìn người thật việc thật. Thông qua thí nghiệm trực tiếp trên Website muadogiadung.vn của em làm với DATA thuộc hàng khủng bố.

Tổng dung lượng web 23GB. Riêng Database 2.39 GB
  • > 15.000 sản phẩm. Bảng wp_posts 69.000 dòng, Bảng wp_postmeta 533.704 dòng dữ liệu.
  • > 3.000.000 Comment đánh giá sản phẩm. Bảng bz_comments 2.715.031 Rows, Bảng wp_commentmeta 8.329.210 Rows
Do website áp dụng các công nghệ AI – Crawl tự động :
  • Tự động lấy sản phẩm của đối tác, đối thủ,
  • Tự động viết lại văn bằng AI giữ nguyên thông số sản phẩm.
  • Tự động tạo 90 -> 160 đánh giá tự nhiên không trùng lặp từ 3 -> 5 sao / mỗi sản phẩm -> Tổng 3 triệu đánh giá trên web.
Website WordPress Với Database Khủng Bố
Website WordPress Với Database Khủng Bố

Nhược điểm lớn nhất của WordPress

WordPress ban đầu sinh ra để dành cho Blog! Nhược điểm lớn nhất của WordPress chính là hệ thống Query DB cực kỳ cồng kềnh. Nếu để làm blog thôi thì không sao! k khác biệt.
Nhưng các đơn vị khác, điển hình là WooCommerce gắn cho nó cái chức năng bán hàng. Gắn 1 đống meta field vào 2 bảng _postmeta và wp_commentmeta. Query join hết bảng này đến bảng kia mới ra được data cần lấy.

Chỉ cần vào trang WP-ADMIN ->  Sản phẩm -> Đánh giá là nó sẽ gọi 1 cái Query đếm tổng số Comment đang có. Và riêng nó mất 5s trời ạ!!!!! Tổng nhiều query khác mất 16s như trên thanh task bar!

Mất 5s để WordPress đếm được Có Tổng 3 Triệu Comment Trên Toàn Bộ Web
Mất 5s để WordPress đếm được Có Tổng 3 Triệu Comment Trên Toàn Bộ Web

Query tào lao khi vào trang wp-admin -> Thảo luận. mất 32s

Query Tào Lao Không Lấy được Dữ Liệu Gì Cũng Mất 32s
Query Tào Lao Không Lấy được Dữ Liệu Gì Cũng Mất 32s

Nhược điểm lớn nhất của MySQL

Tiếp đó, Nhược điểm lớn nhất của MySQL so với MariaDB là từ phiên bản 8.0, MySQL đã bỏ tính năng Query Cache! Chức năng lưu tạm các Query thường xuyên sử dụng.
Họ giải thích rằng “Bộ nhớ đệm mang lại lợi ích lớn nhất khi nó được di chuyển đến gần máy khách hơn”. Ví dụ Cache Redis hoặc cache tầng HTML.
(https://dev.mysql.com/blog-archive/mysql-8-0-retiring-support-for-the-query-cache/)

Nhưng họ đã sai đối với mã nguồn WordPress (hoặc MySQL không ưu tiên WordPress)! Trang WordPress bị chậm nhất là ở trong wp-admin! Trong này lại không có cache HTML. Mọi Query đều đục thẳng vào Database -> Full CPU Liên tục. Bạn có thể khắc phục đỡ bằng cách dùng Redis Cache. Redis lưu dạng Dữ liệu kiểu Object đã qua xào nấu như string, interger. DB Cache thì lưu dữ liệu dạng thuần Query Binary. Cả 2 đều tốn RAM để cache tăng hiệu suất.

NHƯNG! Query Cache có thể tuỳ biến được sâu hơn! VD: Có thể set chỉ cache các Query nặng hơn bao nhiêu kb đó thì mới lưu vào cache. -> Tinh chỉnh để hệ thống sử dụng ít ram hơn -> Giảm thiểu vấn đề tràn ram stop Service trên VPS nhỏ dùng Redis hoặc Memcached.

KẾT HỢP 2 nhược điểm này lại đúng là thảm hoạ mà!!!

Tốc độ được cải thiện sau khi sử dụng Query Cache của MariaDB

Query đếm số comment trên web chỉ còn 0.00001s. Truy cập trang wp-admin ->  Sản phẩm -> Đánh giá chỉ mất 1.8s

Query Chỉ Còn 0.00001s
Query Chỉ Còn 0.00001s đếm số comment

Query tào lao khi vào trang wp-admin -> Thảo luận mất chỉ còn 0.00001s. Tốc độ trang chỉ còn 1.66s

Truy Vấn Mất Chỉ Còn 0.00001s Tốc độ Trang Lên 1.66s
Truy Vấn Mất Chỉ Còn 0.00001s Tốc độ Trang Lên 1.66s

Cảm ơn anh chị đã đọc đến đây. Anh chị thấy bài viết thế nào? Đã đủ thuyết phục để anh chị chuyển sang MariaDB chưa?
Nếu thấy hay đừng ngại Like Share để Group phát triển và hỗ trợ nhiều người hơn ạ <3

Bài viết được liên kết với bài đăng trên Group Hỗ trợ WordPress Việt Nam.
Mời các anh chị cùng tham gia thảo luận tại đây.

————————————————————————————

Tuệ ND from Group Hỗ trợ WordPress Việt Nam with LOVE!!! <3