新零售-MySQL参数的优化

1、优化最大连接数

max_connections 是MySQL 最大并发连接数,MySQL支持最大的连接数上限是16384,我们可以根据实际情况设置最大连接数。

如何判断设置多少合适?

-- 查看数据库当前设置的最大连接数
SHOW VARIABLES LIKE 'max_connections';

-- 查看目前实际的并发连接数是多少
SHOW STATUS LIKE 'max_used_connections';

我们可以先将max_connections设置的大一点,过段时间,再根据实际的max_used_connections 来设置恰当的最大连接数。

注:MySQL配置文件一般在 /etc/my.cnf

MySQL会为每个连接创建缓冲区,因此最大连接数这个参数不是设置的越大越好,我们不应该盲目的上调最大连接数。

将max_connections设置为3000时,消耗约 800MB 内存。

# 设置最大连接数为1500
max_connections=1500
2、优化请求堆栈

back_log 参数是存放执行请求的堆栈大小。

当请求数达到了最大连接数后,新的请求并不会被MySQL拒绝,而是将连接请求存放到堆栈中,等到有空闲连接时,就会把连接分配给堆栈中的请求。

一般将该值设置为最大连接数的 20% 左右

# 设置请求堆栈数为50
back_log=50
3、修改并发线程数

innodb_thread_concurrency 参数代表并发线程数,默认是0,也就是没有上限。

其实该值不是越大越好,调度大量线程会损耗cpu的性能,导致运行速度变慢

并发线程数应该设置为cpu核心数的两倍。

# 设置并发线程数为64
innodb_thread_concurrency=64
4、修改连接超时时间

wait-timeout 参数是超时时间,单位是秒。

MySQL连接默认超时时间为8小时,也就是说,我们这一秒连接MySQL,如果一直不用,8小时候,MySQL才会断掉我们的这个连接。

连接长期不用又不销毁,浪费资源。

# 设置连接超时时间为1小时
wait-timeout=3600