max_connections
最大连接数,每个连接都会占用一定的内存,在查询时传输数据占用内存会加剧,所以要根据系统内存合理配置最大连接数,防止过多占用内存。
一个连接最少占用256KB,最大64M,超过时会使用硬盘临时存放。
系统大部分内存要分配给buffer pool以提高查询性能,所以连接所占内存需要有一定的限制。
max_user_connections
用户最大连接数,必须要小于max_connections,否则当连接数被应用程序耗尽时,管理员无法连接数据库。
back_log
连接等待数,当max_connections连满后,mysql允许等待的数量,超过时会被拒绝连接。
wait_timeout
用户连接空闲等待时间,默认28800秒,为防止应用程序占用资源,可以调整几百秒
interactive_timeout
数据库管理端空闲等待时间
innodb_thread_concurrency
innodb线程最大并发数,默认值为0,不限制并发数,该参数要参考CPU最大核心数,若并发数远大于核心数,会造成锁竞争严重,影响性能。
一般设置为CPU核心数的2倍或1倍。
innodb_buffer_pool_size
innodb的buffer pool大小,尽量调大, 一般设定为给mysql分配的总内存的60%-70%
innodb_lock_wait_timeout
行锁超时时间,默认50秒,按业务类型设定
innodb_flush_log_at_trx_commit
redo log 的写入策略,存在3个策略,一般选1,安全优先
0 事务提交不写磁盘,继续存放在redo log buffer中, 数据库宕机丢数据
1 默认值,每次提交事务都会写入磁盘, 最安全
2 提交事务,写入到操作系统文件缓存 page cache, 服务器宕机丢数据
sync_binlog
sync_binlog的写入策略,一般选1,安全优先。
0 默认值,提交事务都只写到系统文件缓存page cache,性能有提升,但操作系统宕机后会丢失数据。
1 提交事务会执行fsync写入到磁盘,安全性最高。
n n>1,提交事务后先写文件缓存page cache, 等积累n个事务后再写磁盘,折中方案。