前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql学习笔记(十二)- 并发参数调节

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

作者头像
写一点笔记
发布2020-12-31 10:15:35
3340
发布2020-12-31 10:15:35
举报
文章被收录于专栏:程序员备忘录程序员备忘录

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平台,最大连接数有以下限制:

代码语言:javascript
复制
(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以及每个连接执行关联查询中所涉及的表的最大数量来设定。

代码语言:javascript
复制
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,可以根据动态调整。对于后台执行的批处理操作,可以调大避免回滚。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员备忘录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档