MySQL 占用内存、连接数相关参数
下面参数都是服务端参数,默认在配置文件的 [mysqld] 标签下
# 最大连接数
max_connections=3000
连接对象的创建和销毁都是需要系统资源的,一个连接最小占用内存是256K,最大占用内存是64M。如果一个连接占用内存超过了64M 比如排序操作,那么就会申请临时空间,放到磁盘中。
# 最大用户连接数
max_user_connections=2980
假如设置了最大3000个连接,还需要留一些连接给DBA登录,避免连接对象全被用户占用导致DBA登录不进去
# 暂存最大连接数
back_log=300
当连接对象达到最大连接数后,新的连接对象就会存放在堆栈中等待,如果超过了back_log设置的值还有更多的连接就拒绝
# 通过jdnbc连接对象 空闲n秒后断开连接
wait_timeout=300
指的是app应用通过jdbc连接mysql进行操作完毕后,空闲300秒后断开,默认是28800,单位秒,即8个小时。
# mysql client客户端的连接对象 空闲n秒后断开连接
interactive_timeout=300
指的是mysql client连接mysql进行操作完毕后,空闲300秒后断开,默认是28800,单位秒,即8个小时。
# InnoDB存储引擎并发的线程数
innodb_thread_concurrency=64
此参数用来设置innodb线程的并发数,默认值为0表示不被限制,若要设置则与服务器的CPU核心数相同或是CPU的核心数的2倍,如果超过配置并发数,则需要排队,这个值不宜太大,不然可能会导致线程之间锁争用严重,影响性能。
# InnoDB存储引擎缓冲池大小
innodb_buffer_pool_size=40G
innodb存储引擎buffer pool缓存大小,一般为物理内存的60%-70%。
# 行锁等到超时时间
innodb_lock_wait_timeout=10
行锁锁定时间,默认50s,根据公司业务定,没有标准值。
# Redolog的刷盘策略 一般不建议改就用默认值 是否是事务提交就同步刷盘
innodb_flush_log_at_trx_commit=1
# binlog的刷盘策略
sync_binlog=1
默认值是0,可以设置为1表示事务每次提交binlog都同步刷盘
# 排序缓冲区大小,每一个session会话都会分配这样的一块区域,所以不宜设置过大
sort_buffer_size=4M
每个需要排序的线程分配该大小的一个缓冲区。增加该值可以加速ORDER BY 或 GROUP BY操作。
# 用于表连接的缓冲区大小,也是每个session会话都会分配这样一块区域
join_buffer_size=4M