# MySQL 参数优化

# 优化最大连接数

max_connections 是 MySQL 最大并发连接数,默认值是 151,最大值允许为 16384;

实际连接数设置为:最大连接数的 85% 较为合适

-- 目前设置的最大并发连接数量
show variables like 'max_connections' 
-- 目前实际连接数量
show status like 'max_used_connections';
1
2
3
4

/etc/my.cnf 中增加 max_connections=5000 ,该配置需要重启数据库

MySQL 为每个链接 创建缓冲区,所以不应该盲目上调最大连接数。需要考虑你的服务器硬件,如内存是否能支持到这么大的连接数量。

-- 比如,在满负荷 3000 并发下,消耗内存为 800M 内存
max_connections=3000
-- 那么你就要计算你设置的并发连接数量消耗内存是否内存能装得下
1
2
3

# 优化请求堆栈

back_log 是存放执行请求的堆栈大小,默认值是 50;这个可以理解为队列,当并发连接达到了最大值,剩下的则会放入这个请求堆栈中;

# 修改并发线程数

innodb_thread_concurrency 是并发线程数量,默认是 0,无限制;

这个是多线程的相关的知识了,在CPU 密集型的场景下,设置为何 CPU 核数一样的较佳。

视频中推荐:设置为 CPU 核心数的两倍

# 修改链接超时

wait-timeout 超时时间,单位是秒;默认超时时间为 8 小时。

链接长期不用,又不销毁,很是浪费资源

# InnoDB 的缓存

这里说的不是 查询缓存,另外查询缓前面说过了,MySQL 8+ 已经去掉了这个功能。

image-20200614182205307

缓存里面保存了两类数据:部分数据和部分索引

# 修改 InnoDB 缓存大小

innodb_buffer_pool_size 是 InnoDB 的缓存容量,默认是 128M。

可以设置为主机内存的 70%~80%

# 小结

数据库参数优化配置有很多,这里只是列出了,可以明显改善数据库性能的参数。