本文的推荐参数值设置基于4G-8G内存的服务器。具体情况根据服务器环境再做调整。
Setting | Default | Recommended | Info |
---|---|---|---|
back_log | 50 | 500 | 参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 |
key_buffer_size | 8388600(8m) | 402649088(400mb) | 指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。 |
max_allowed_packet | 1024(1m) | 20480(20m) | MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。 |
thread_stack | 196608(192KB) | 262,144(256KB) | 每个连接线程被创建时,MySQL给它分配的内存大小。当MySQL创建一个新的连接线程时,需要给它分配一定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各种状态和处理信息。 |
table_cache | 2000 | 512 | table_cache是一个非常重要的MySQL性能参数,它在5.1.3之后的版本中叫做table_open_cache。table_cache主要用于设置table高速缓存的数量。 |
sort_buffer_size | 1048576(1m) | 1048576(1m) | 查询排序时所能使用的缓冲区大小。sort_buffer_size并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。 |
read_buffer_size | 1048576(1m) | 1048576(1m) | 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。 |
join_buffer_size | 1048576(1m) | 1048576(1m) | 联合查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。 |
thread_cache_size | 32 | 32/64 | 线程缓存大小。 |
query_cache_size | 0 | 32 | MySQL高速缓存。 |
tmp_table_size | 16777216 | 16777216 | 配置内部内存临时表的大小。 |
max_connections | 100 | 3000 | 指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现TooManyConnections的错误提示,则需要增大该参数值。 |
max_connect_errors | 100 | 100 | 如果MySQL服务器连续接收到了来自于同一个主机的请求,而且这些连续的请求全部都没有成功的建立连接就被中断了,当这些连续的请求的累计值大于max_connect_errors的设定值时,MySQL服务器就会阻止这台主机后续的所有请求。 |
wait_timeout | 28800(8小时) | 28800(8小时) | 在默认配置不改变的情况下,如果连续8小时内都没有访问数据库的操作,再次访问mysql数据库的时候,mysql数据库会拒绝访问。 |
错误调整
部分参数可能因为版本升级导致弃用或者默认值变化,具体情况还需具体分析。
unknown variable 'key-buffer=256M' ,修改my.cnf文件去掉改项即可。
unknown variable 'table-cache=512' 修改为table_open_cache即可。
unknown variable 'thread-concurrency=8' 去掉改项,5.7已结废弃。