Tìm giải pháp cho slow queries trong Wordpress
Em chào mọi người,
Trong quá trình phát triển dự án, từ lúc đầu tới lúc dự án có tương đối dữ liệu gồm nhiều meta data khác nhau. Query dữ liệu gặp vấn đề về hiệu suất, anh chị cho em hỏi có giải pháp nào cho việc tối ưu này không?
Em cảm ơn.
2 ANSWERS
Mình không làm về wordpress nhưng vẫn dùng sql thì mình nghĩ cách giải quyết có lẽ sẽ như nhau:
Nếu chậm do quá nhiều dữ liệu thì bạn có thể thử các cách sau:
- Đánh index để giúp truy vấn nhanh hơn
- Cache lại dữ liệu để lần sau sử dụng không cần phải truy vấn tới db nữa
- Tiến hành làm phân trang: Đừng load hết toàn bộ dữ liệu ra mà hãy phân trang cho người dùng
Nếu chậm do queries trùng lặp nhiều
- Việc các bạn có relation với nhau nếu query không cẩn thận sẽ dẫn tới việc trùng lặp dữ liệu (n + 1), bạn cũng nên thử check xem có đang gặp vấn đề này không để thay đổi lại cách query cho phù hợp
Đó là ý kiến riêng của mình thôi
Thank anh ạ. trong wp mỗi lần update core là sẽ bắt làm mới mysql, về đánh index cho my sql anh có example không cho em xin với ạ.
@subhopefully đánh index thì nó sẽ phù hợp với việc dữ liệu ít bị update hơn, còn dữ liệu mà update liên tục thì có lẽ không phải là cách hay
Bạn có thể đọc thêm những bài về index trên viblo:
https://viblo.asia/p/index-trong-mysql-va-cach-su-dung-K1ov1akxv5b9
@duong.manh.hoang ok anh ạ. Em đọc ngoài việc phải xử lý trong mysql ra thì có service NewRelic có thể dùng anh biết cái này k ạ.
@subhopefully mình chưa biết về cái này. Vừa có thử đọc qua thì nó để giám sát hệ thống, chứ hình như không giúp tối ưu
@duong.manh.hoang vâng anh, many thanks.
Wordpress từ đầu vốn đã không phải là mã nguồn hướng đến hiệu suất cao. Bạn có thể thử tìm những plugin giúp bổ sung khả năng cache như Total Cache, Super Cache,... để giúp cải thiện hiệu suất xem sao. Với trang web dần cồng kềnh và có nhiều lượt truy cập thì mình nghĩ đây là lúc để dần xây dựng mã nguồn Web riêng cho đúng với mục đích của bạn nhất và migrate sang, lúc này bạn sẽ có nhiều cơ hội để tối ưu hoá hơn và tuỳ ý sử dụng công nghệ mình muốn (như sử dụng Node.js, Go, Mongodb,...).