Việc tối ưu cơ sở dữ liệu luôn là một trong các việc rất quan trọng đặc biệt càng quan trọng khi website của bạn đã sử dụng trong một thời gian dài rồi.
Đặc biệt càng quan trọng khi website của bạn có nhiều traffic bởi vì bạn biết rằng website càng có nhiều lượt truy cập thì website sẽ càng gửi nhiều truy vấn (query) về database để lấy dữ liệu ra (truy vấn SELECT
). Nếu bạn chưa được sắp xếp gọn gàng thì nó lại càng mất thêm thời gian để xử lý các truy vấn đó.
Chủ đề về tối ưu database rất nhiều và khá rộng ở trong bài viết này mình sẽ chia sẻ về tối ưu bảng wp-options của wordpress đây là bảng tác động hiệu suất wordpress nhiều nhất cần phải được chăm sóc đặc biệt.
Bài viết này mình sẽ hướng dẫn các bạn tối ưu hóa wp-option để cải thiện tốc độ load website giúp database của bạn hoạt động hiệu quả hơn.
MỤC LỤC BÀI VIẾT
Bảng WP_OPTIONS là gì
wp-option là một bảng được khởi tạo mặc định khi bạn khởi tạo sử dụng WordPress.
Mục đích của nó là nơi lưu trữ những thiết lập của wordpress, những config nào đó bạn thiết lập trong trang quản trị wordpress (Ví dụ như bạn thiết lập themes bật tính năng này tắt cái kia, bạn thiết lập plugin config làm cái này sử dụng cái kia, URL trang web, URL trang chủ, email quản trị, danh mục mặc định, bài đăng trên mỗi trang, định dạng thời gian, và cả dữ liệu cache tạm thời v.v. sẽ được lưu trữ ở trong này, và các plugin themes core wordpress thì khi sử dụng sẽ gọi giá trị bạn thiết lập ra.
Đây là bảng cực kỳ quan trọng, trong hiệu suất của WordPress cần phải được chăm sóc tối ưu kỳ càng.
Hướng dẫn tối ưu hóa wp-options
Mình sẽ chia sẻ một số kỹ thuật wp-options để giúp mọi người cải thiện hiệu quả của database nhé.
Khuyến cáo: trước khi thực hiện các hướng dẫn ở bên dưới thì bạn vui lòng backup lại database trước khi làm theo các hướng dẫn của mình để đảm bảo sự an toàn, nếu có sự cố xảy ra thì sẽ dễ dàng khôi phục lại.
Xóa transient
Khi bạn đang sử dụng wp_object_cache WordPress lưu trữ các bản ghi transient trong bảng wp_options.
Bạn có thể tham khảo: object cache và wp_object_cache là gì
Thông thường, transient có thời gian hết hạn và sẽ biến mất theo thời gian. Tuy nhiên, điều đó không phải luôn luôn chắc chắn như vậy cuộc đời nó lại hơi khác cuốc sống. Chúng tôi đã thấy một số cơ sở dữ liệu có hàng nghìn bản ghi cũ tạm thời. Trên thực tế, trên một trang web, chúng tôi đã xử lý một số bản ghi tạm thời bị hỏng, trong đó hơn 690.000 hàng được tạo trong bảng wp_options. Chỉ cần đúng 1 lệnh dọn dẹp ở dưới thì file database từ 600mb xuống còn 11mb!
Lệnh dọn dẹp transient
1 | DELETE FROM wp_options WHERE option_name LIKE ('%_transient_%'); |
Ghi chú: Hãy thay tiền tố wp_ thành tiền tố bạn đang sử dụng nếu như bạn có thay đổi tiền tố, không sử dụng tiền tố mặc định. Bạn copy rồi paste vào sql bạn có thể sử dụng phpmyadmin ở phần sql hoặc bạn có thể sử dụng wp cli hoặc lệnh mysql thực thi.
Ví dụ: bạn sử dụng phpmyadmin, bạn chọn database bạn muốn thực hiện tại rồi, bạn chuyển qua tab SQL rồi cho đoạn lệnh của mình vào để ở bên trên rồi bạn tiếp tục ấn vào phần thực thi
Dọn dẹp session
Một vấn đề phổ biến khác giống như transient ở bên trên mà chúng mình đã thấy là đôi khi các công việc cron không đồng bộ hoặc không hoạt động đúng cách và do đó các phiên không được dọn dẹp. Bạn có thể nhận được hàng tấn wp_session hàng trong cơ sở dữ liệu của mình.
Lệnh dọn dẹp wp_session
1 | DELETE FROM wp_options WHERE option_name LIKE '_wp_session_%'; |
Bạn có thể wp_ thay bằng tiền tố của chính bạn rồi. bạn paste vào sql bạn có thể sử dụng phpmyadmin ở phần sql hoặc bạn có thể sử dụng wp cli hoặc lệnh mysql thực thi.
ADD INDEX autoload bảng wp-options
Kỹ thuật này bạn hiểu đơn giản là bảng wp-options như là một quyển sách, bạn add index giống như bạn thêm mục lục và đánh số trang và đánh số chương cho quyển sách, như vậy thì nếu bạn cần tìm kiếm thông tin dữ liệu gì trong quyển sách thì bạn sẽ dễ dàng hơn và nhanh chóng tìm kiếm đến vị trí trang sách bạn cần tìm.
Kỹ thuật này sẽ hiệu quả khi autoload của bạn lớn 1mb thì mới thực sự mới có giá trị hiệu suất cho bạn, còn nếu dưới thì thực sự không có nhiều giá trị lắm.
Lệnh add index bảng wp_options
1 | CREATE INDEX autoloadindex ON wp_options(autoload, option_name); |
Hãy thay tiền tố wp_ thành tiền tố bạn đang sử dụng nếu như bạn có thay đổi tiền tố, không sử dụng tiền tố mặc định
Nếu trong trường hợp bạn muốn xóa index đi thì sử dụng lệnh:
1 | DROP INDEX autoloadindex ON wp_options; |
Xóa dữ liệu database không sử dụng
Vì sao phải xóa dữ liệu không sử dụng?
Ví dụ trong quá khử bạn sử dụng 1 plugin nào đó, rồi bạn không thích dùng plugin đó nữa bạn xóa plugin đó đi, nhưng thực sự các dữ liệu của plugin bạn xóa đó vẫn còn nằm ở trong database của bạn.
Tại sao lại có điều đó?
Chỉ đơn giản là tác giả plugin và theme chiến lược kinh doanh của họ, mong bạn đến một ngày đẹp trời, quay trở lại sử dụng plugin của họ thì bạn không cần thiết lập lại nữa. chính vì điều đó các vẫn nằm ở trong database. trong tương lai có thể bạn không quay lại sử dụng hay quay lại plugin đó đi nữa thì thực sự dữ liệu database gắn lại đó làm chậm tốc độ load website của bạn
Cách 1: Xóa dữ liệu bằng thủ công
Đây là câu chuyện nói thì đơn giản đấy nhưng thực hiện thì là cũng một quá trình cần phải nỗ lực rất nhiều. Nhưng thực sự nó rất đang nỗ lực nếu như bạn ám ảnh đam mê tốc độ load website. Đây là cách yêu thích của mình và mình vẫn sử dụng nó hàng ngày để tối ưu website cho khách hàng của mình.
Nhiều khi dữ liệu database các tác giả có tâm họ đặt tên có quy tắc nhìn phát là biết ngay dữ liệu này là của plugin nào luôn để mình dễ dàng xóa.
Còn tác giả không có tâm họ đặt tên tiền tố loan cả lên chả biết dữ liệu của plugin nào. Nhưng cũng may là có một trang web giúp mình dễ dàng thực hiện trang cứu điều đó: là website: plugintests.com
Bạn có thể truy cập vào website trên truy cứu những plugin trong quá khứ bạn sử dụng rồi clean xóa nó đi.
Cách 2: Bạn có có thể sử dụng Plugin Advanced DB Cleaner Pro đây là cách tự động nhưng mình khuyến cáo là không nên sử dụng vì sử dụng có thể xóa nhầm dữ liệu tỷ lệ database bạn ra đi là rất cao và dọn dẹp sẽ không được sạch cho lắm, hên thì chỉ khoảng 50% là ngon rồi. Nhưng thực sự nó sẽ hữu ích nếu như bạn lười không có thời gian tìm kiếm thì sử dụng plugin này cũng là lựa chọn tốt.
Đây là một plugin trả phí, nếu thực sự bạn cần plugin này thì có thể liên hệ với mình để mình tặng miễn phí.
Chuyển đổi công nghệ innodb
Khi bạn cài đặt website WordPress từ khoảng 3 năm trở về đây thì wordpress đã mặc định sử dụng inodb thay vì myiam.
Bạn cũng lên kiểm tra lại.
InnoDB thực sự vượt trội MyISAM ở nhiều khía cạnh, innodb đem lại hiệu suất tốt hơn.
Công nghệ lưu trữ database từ MyISAM sang InnoDB
Lời Kết:
Nhưng mình tin rằng với những tips nhỏ ở trên nhưng nó sẽ giúp website đạt hiệu suất cao hơn rất nhiều, đặc biệt là các website lớn và website dạng động.
Bạn có thể tham khảo nhiều kỹ thuật tối ưu database hơn tại wptangtoc.com đây là một blog mình chia sẻ những kiến thức mình học được về tăng tốc website.
Nguồn: wptangtoc.com