mysql server系统参数
假设电脑配置
- CPU :32 核
- 内存: 64G
- DISK: 2T SSD
mysql 最大连接数
max_connections=3000
怎么设置这个值?
首先预估可以分配给连接的内存有多少,分配给 innodb buffer pool 大概 40G,给操作系统分配 4G,那么给连接可分配的内存不到 20G。
一个连接占用内存最少是 256 K,最大 64 M。如果 3000 个连接全部使用,那么占用内存最少是 256kb * 3000 = 750M,内存占用最大是 64M * 3000 = 192G。
所以这个连接数不太合适,需要减少最大连接数。
允许用户连接的最大连接数
max_user_connections=2980
20 个用来给 DBA 管理使用。
暂存的用户数
back_log=300
连接全部使用,新的连接保存在堆栈中,等待资源释放,如果堆栈连接数达到 300,剩下的连接会被拒绝。
app应用通过 jdbc 连接mysql进行操作完毕后,空闲300秒后断开
wait_timeout=300
默认是 8 个小时
app应用通过 mysql client 连接mysql进行操作完毕后,空闲300秒后断开
interactive_timeout=300
默认是 8 个小时
sort buffer 大小
sort_buffer_size=4M
给每个需要排序的线程分配 4M 的缓冲区
join buffer 大小
join_buffer_size=4M
用于表关联缓存的大小
innodb参数
innodb 线程并发数
innodb_thread_concurrency=64
默认值是 0,表示不限制,可以把它设置为与服务器 CPU 核数相同或者是 CPU 核数 2 倍。
innodb存储引擎buffer pool缓存大小
innodb_buffer_pool_size=40G
一般为物理内存的60%-70%
行锁锁定时间
innodb_lock_wait_timeout=10
默认 50s