Mysql学习笔记(十二)- 并发参数调节

mysql是多线程结构,包括后台线程和客户服务线程,多线程可以有效利用服务器资源,提高数据库的并发性能。在mysql的并发能力上,主要有有下列参数界定。分别为max_connections,back_log,thread_cache_size,table_open_cache等。

1.调整max_connections提高并发连接数

max_connections表示最大连接数量,默认值为151,如果状态变量connection_errors_max_connctions不为零,并且一直在增长,说明不断有连接请求因为数据库连接数量达到允许的最大值而连接失败,应该考虑增大该值。在linux平台,mysql支持500-1000个连接不是问题,但是再window平台,最大连接数有以下限制:

(open tables*2+open connections)<2048

每个session操作mysql数据库表都需要占用文件描述符,数据库连接本身也要占用文件描述符,因此在增大max_connections时,也要注意评估open-files-limit的设置是否够用!

2.调整back_log

back_log参数控制mysql监听tcp端口时设置的积压请求栈的大小,默认是50,5.6版本之后默认值为50+(max_connections/5),但是最大不能超过900

如果需要数据库在较短时间内处理大量的连接请求,可以考虑增大back_log的值。

3.调整table_open_cache

每一个sql执行线程至少要打开一个表缓存,参数table_open_cache控制所有sql执行线程可以打开表缓存的数量,这个参数应该根据最大连接数max_connections以及每个连接执行关联查询中所涉及的表的最大数量来设定。

max_connections*n

如果mysql的状态变量opened_tables比较大,说明table_open_cache设置的太小,应该适当增大,但是增大table_open_cache的值会增加mysql对文件描述符的使用量,因此也要注意评估open_files_limit的设置是否足够。

4.设置thread_cache_size

为了加快连接数据库的速度,mysql会缓存一定数量的客户服务线程以备重用,通过参数thread_cache_size可控制mysql缓存客户端服务线程的数量

5.innodb_lock_wait_timeout的设置

参数innodb_lock_wait_timeout控制innodb事务执行锁的时间,默认为50ms,可以根据动态调整。对于后台执行的批处理操作,可以调大避免回滚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值