以下是安装 MySQL 后可以尝试的优化项目,建议逐样项目修改,以检视每个项目的优化成效,而大部份的设定可以在运行中 MySQL 设定,不用重新启动 MySQL。
innodb_buffer_pool_size: 这个设定是 innodb 储存引擎数据库,所使用的资料及索引快取,根据内存的大小䀆量设定大一点,可以减低读取资料时从硬盘读取的次数。如果是独立的 MySQL 服务器,可以这样设定:
系统 8GB 内存: 5GB – 6GB
系统 32GB 内存: 20GB – 25GB
系统 128GB 内存: 100GB – 120GB
innodb_log_file_size: 这是 redo logs 的体积,redo logs 可以更快速地写入,默认值是 2GB,这个设定可以从 2GB 开始逐步增加,以找到最适合的设定。MySQL 5.5 最大可以设定成 4GB, 而 MySQL 5.6 开始则没有这个限制。
max_connections: 如果 MySQL 服务器经常出现 “Too many connections” 错误,那便表示 “max_connections” 设定太低,默认值是 151, 可以从 500 开始设定,如果还遇到 “Too many connections” 问题,才逐步增加测试。
innodb_file_per_table: 这个不是效能上的优化,而是使 InnoDB 资料表管理更方便。当设定成 off 时,所有 InnoDB 资料表的资料及索引会储存在一个 .ibd 档案,如果设定成 on, 每个资料表会有一个独立的 .ibd 档。
MySQL 5.6 开始默认是 on, 之前的版本默认是 off.
innodb_flush_method: 设定资料及快取如果写入硬盘,当系统有 RAID 卡及支援电池保护 write-back 快取,建议设定成 O_DIRECT.
innodb_log_buffer_size: 这是 transactions 的缓存大小,默认值是 1MB, 如果 transactions 的字段是 blob 或 text,援存很快会用尽,可以逐步增加。
log_bin: 当设定成 replication master 时,log_bin 必须开启,对于单独的 MySQL 服务器,也可以用作恢复资料。但由于会增加系统的硬盘 I/O 动作,如果没有以上两个需要,可以关闭。
skip_name_resolve: 当客户端连接到 MySQL 服务器, MySQL 会解析 hostname, 当 DNS 的解析缓慢时,建立连接也会一同变得缓慢,这样可以关闭,但缺点是设定达端使用者登入时,只可以用 IP, 而不可以用 hostname.