Việc tối ưu hóa MYSQL cho xenforo là việc đầu tiên các bạn sẽ phải làm khi muốn cho diễn đàn của các bạn hoạt động ổn định và chạy nhanh, tiết kiệm được chí phí server
Đây là các kinh nghiệm tối ưu hóa mysql - Mysql Optimization cho xenforo mà trong hơn 1 năm sử dụng xenforo tôi rút ra được kinh nghiệm
Do đặc tính cấu hình của MYSQL mà bài viết này tôi nhằm tới đối tượng cần tối ưu cho xenforo, chẳng hạn như diễn đàn chạy chậm, server hay quá tải, hay bị lỗi database, đa số nguyên nhân là thằng MYSQL này gây ra và chiếm dụng tài nguyên
1. Lựa chọn phiên bản mysql
Vì xenforo chạy với storage InnoDB cho nên tôi khuyên các bạn hãy cài đặt Mariadb hoặc Percona vì 2 phiến thể MYSQL này chuyên về tối ưu cho InnoDB rất mạnh, qua thử nghiệm một thời gian với Mariadb của tôi và cho thấy tốc độ nhanh hơn MYSQL khá nhiều, load server giảm tới 50%
Cách cài đặt Mariadb
http://tuoitreit.vn/threads/25597-gioi-thieu-va-huong-dan-cai-dat-mariadb.html
Hoặc Percona các bạn có thể tìm kiếm trên google, sử dụng y hệt MYSQL thôi vì nó là các nhánh của mysql oracle
2 . Cấu hình InnoDB
Các bạn có thể thay thế giá trị phù hợp
innodb_buffer_pool_size=8G
innodb_file_per_table=1
innodb_additional_mem_pool_size=16M
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2
Phần innodb_buffer_pool_size= ví dụ nếu database của các bạn là 1gb thì hãy set là 1.2G, lớn hơn 20% so với size database của các bạn
Các phần còn lại cứ để nguyên
3. Giảm bớt dung lượng database
Databse bị chiếm dụng quá lớn từ một số table không quan trọng
Tình cờ một lần kiểm tra trong database của tôi bằng phpmyadmin thì tôi phát hiện table xf_IP lên tới 2GB
Khủng khiếp , mỗi IP thôi mà nó lưu tận 2GB , điều này cũng dễ hiểu vì IP đa số chúng ta là động, và mỗi lần đăng nhập thì hệ thống sẽ lưu lại IP đó. Thực ra việc này cũng rất tốt cho các mod làm việc để tìm ra dấu vết tội phạm, tuy nhiên thì cũng mấy khi dùng đến nó đâu
Do vậy ta sẽ làm trống cái table đó đi cho nhẹ data
Hoặc các bạn có thể cài một add on có tính năng tự động clean định kỳ XF_IP theo thời gian mong muốn
4 . Cài đặt công dụ tìm kiếm Elasticsearch for Xenforo để giảm truy vấn đến database và tiết kiệm được hơn 1 nửa dung lượng database, ví dụ databse của tôi là 5gb thì sau khi cài Elasticsearch dung lượng thì databse của tôi chỉ còn lại khoảng 2GB mà thôi
Một điều mà mình thấy cũng rất hay là sau khi sử dụng Enhanced Search thì bảng xf_search_index không còn hoạt động nữa và ta làm trống nó đi. Sau khi làm trống xong thì dung lượng database đã giảm đi 1 nửa . rất tiện cho backup
Nguồn: DVPDA
Đây là các kinh nghiệm tối ưu hóa mysql - Mysql Optimization cho xenforo mà trong hơn 1 năm sử dụng xenforo tôi rút ra được kinh nghiệm
Do đặc tính cấu hình của MYSQL mà bài viết này tôi nhằm tới đối tượng cần tối ưu cho xenforo, chẳng hạn như diễn đàn chạy chậm, server hay quá tải, hay bị lỗi database, đa số nguyên nhân là thằng MYSQL này gây ra và chiếm dụng tài nguyên
1. Lựa chọn phiên bản mysql
Vì xenforo chạy với storage InnoDB cho nên tôi khuyên các bạn hãy cài đặt Mariadb hoặc Percona vì 2 phiến thể MYSQL này chuyên về tối ưu cho InnoDB rất mạnh, qua thử nghiệm một thời gian với Mariadb của tôi và cho thấy tốc độ nhanh hơn MYSQL khá nhiều, load server giảm tới 50%
Cách cài đặt Mariadb
http://tuoitreit.vn/threads/25597-gioi-thieu-va-huong-dan-cai-dat-mariadb.html
Hoặc Percona các bạn có thể tìm kiếm trên google, sử dụng y hệt MYSQL thôi vì nó là các nhánh của mysql oracle
2 . Cấu hình InnoDB
Các bạn có thể thay thế giá trị phù hợp
innodb_buffer_pool_size=8G
innodb_file_per_table=1
innodb_additional_mem_pool_size=16M
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=2
Phần innodb_buffer_pool_size= ví dụ nếu database của các bạn là 1gb thì hãy set là 1.2G, lớn hơn 20% so với size database của các bạn
Các phần còn lại cứ để nguyên
3. Giảm bớt dung lượng database
Databse bị chiếm dụng quá lớn từ một số table không quan trọng
Tình cờ một lần kiểm tra trong database của tôi bằng phpmyadmin thì tôi phát hiện table xf_IP lên tới 2GB
Khủng khiếp , mỗi IP thôi mà nó lưu tận 2GB , điều này cũng dễ hiểu vì IP đa số chúng ta là động, và mỗi lần đăng nhập thì hệ thống sẽ lưu lại IP đó. Thực ra việc này cũng rất tốt cho các mod làm việc để tìm ra dấu vết tội phạm, tuy nhiên thì cũng mấy khi dùng đến nó đâu
Do vậy ta sẽ làm trống cái table đó đi cho nhẹ data
Hoặc các bạn có thể cài một add on có tính năng tự động clean định kỳ XF_IP theo thời gian mong muốn
4 . Cài đặt công dụ tìm kiếm Elasticsearch for Xenforo để giảm truy vấn đến database và tiết kiệm được hơn 1 nửa dung lượng database, ví dụ databse của tôi là 5gb thì sau khi cài Elasticsearch dung lượng thì databse của tôi chỉ còn lại khoảng 2GB mà thôi
Một điều mà mình thấy cũng rất hay là sau khi sử dụng Enhanced Search thì bảng xf_search_index không còn hoạt động nữa và ta làm trống nó đi. Sau khi làm trống xong thì dung lượng database đã giảm đi 1 nửa . rất tiện cho backup
PHP:
TRUNCATE xf_search_index
Nguồn: DVPDA