Vấn đề lưu lượng các câu lệnh trong mysql trở nên quá tải khi lượng người truy cập tới website của bạn lên tới con số hàng trăm thậm chí hàng nghìn người trong cùng một thời điểm sẽ làm cho hệ thống máy chủ CSDL không thể xử lý kịp đồng thời sẽ xảy ra nhiều lỗi hệ thống không thể đoán trước. Sau đây TCN sẽ hưỡng dẫn một số cách config CSDL Mysql tối ưu nhất. 1. Tối ưu hóa hiệu xuất câu lệnh Mysql với Mysqltuner : MySQL Tuner Script là giải pháp cho trường hợp này. Nó được viết trên Perl, chức năng chính là phân tích MySQL server, sau đó đưa ra các cấu hình đề nghị trên thông số thu được. Do đó, MySQL Tuner có thể cải thiện được hiệu suất làm việc của server tong bất kỳ trường hợp nào. Câu lệnh cài đặt : cd /usr/local/bin wget http://mysqltuner.pl/mysqltuner.pl chmod +x mysqltuner.pl mysqltuner Truy cập quyền 'root' trong Mysql : mysql -uroot -p Cập nhật thông số theo mysqlTuner : mysql> SET GLOBAL query_cache_size=1024*1024*16; Xem thông số đã thiết lập : mysql> SHOW GLOBAL VARIABLES LIKE 'query_cache%'; 2. Tối ưu hóa các thiết lập trong Mysql : Sử dụng lệnh truy cập, chỉnh sửa tệp tin '/etc/my.cnf' : vi /etc/my.cnf Tạo các thay đổi sau phù hợp với máy chủ : [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 local-infile=0 #ignore_builtin_innodb innodb_file_per_table=1 default_storage_engine=MyISAM skip-external-locking query_cache_limit=1M query_cache_size=32M ## 32MB for every 1GB of RAM max_user_connections=200 max_connections=500 thread_cache_size=128 key_buffer_size=64M ## 128MB for every 1GB of RAM join_buffer=1M max_connect_errors=20 max_allowed_packet=8M table_open_cache=256 sort_buffer_size=1M ## 1MB for every 1GB of RAM read_buffer_size=1M ## 1MB for every 1GB of RAM read_rnd_buffer_size=1M ## 1MB for every 1GB of RAM thread_concurrency=2 ## Number of CPUs x 2 myisam_sort_buffer_size=64M net_buffer_length = 8K collation-server=utf8_unicode_ci character_set_server=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid open_files_limit=8192 [mysqldump] quick max_allowed_packet=16M [mysql] no-auto-rehash [isamchk] key_buffer=64M sort_buffer=64M read_buffer=16M write_buffer=16M [myisamchk] key_buffer=64M sort_buffer=64M read_buffer=16M write_buffer=16M [mysqlhotcopy] interactive-timeout [client] default-character-set=utf8 Sau khi hoàn tất các bạn khởi động lại Mysql : /etc/init.d/mysqld restart hoặc service mysqld restart Với các thiết lập trên hệ thống Mysql của bạn cũng đã được giảm tải 40% hiệu xuất của hệ thống. Ngoài ra các bạn hãy tìm hiểu thêm để config hệ thống tốt nhất cho máy chủ của bạn. Chúc các bạn thành công ! Mr.Vinh Trang Công Nghệ Theo Trang Công Nghệ