千家信息网

MySQL并发参数调整的示例分析

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了MySQL并发参数调整的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mysql并发参数调整从实现上来说,M
千家信息网最后更新 2025年01月21日MySQL并发参数调整的示例分析

这篇文章主要介绍了MySQL并发参数调整的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Mysql并发参数调整

从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在Mysql中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_cache_size、table_open_cahce。

1、max_connections

采用max_connections 控制允许连接到MySQL数据库的最大数量,默认值是 151如果状态变量 connection_errors_max_connections 不为零,并且一直增长,则说明不断有连接请求因数据库连接数已达到允许最大值而失败,这是可以考虑增大max_connections 的值。
说明:当同时连接的请求超过151个之后,就没有可用的连接来处理客户端的请求了。后面进来的这些连接都会处于等待状态。等待MySQL连接被释放,如果没有空闲的连接,就会请求超时

Mysql 最大可支持的连接数,取决于很多因素,包括给定操作系统平台的线程库的质量、内存大小、每个连接的负荷、CPU的处理速度,期望的响应时间等。在Linux 平台下,性能好的服务器,支持 500-1000 个连接不是难事,需要根据服务器性能进行评估设定

2、back_log

back_log 参数控制MySQL监听TCP端口时设置的积压请求栈大小。如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源,将会报错。5.6.6 版本之前默认值为 50 , 之后的版本默认为 50 + (max_connections / 5), 但最大不超过900。
说明:当客户端同时发过来的请求并发量大于151,后面过来的请求处于等待的状态。那么等待的连接数可以达到back_log。这些新来的请求就会被存储在堆栈当中。以等待某个连接被释放。该堆栈的数量就通过back_log来设置。

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

3、table_open_cache

该参数用来控制所有SQL语句执行线程可打开表缓存的数量, 而在执行SQL语句时,每一个SQL执行线程至少要打开 1 个表缓存。该参数的值应该根据设置的最大连接数 max_connections 以及每个连接执行关联查询中涉及的表的最大数量来设定

max_connections x N ;
说明:这个不是针对于某个会话的,这个是针对于所有客户端执行线程。表缓存的数量,也就是每个SQL语句中操作表的个数,比如一条SQL语句一般至少操作一张表。操作一张表,就有1个表缓存,操作多张表,就有多个表缓存。

mysql> show variables like 'table_open_cache%';+----------------------------+-------+| Variable_name              | Value |+----------------------------+-------+| table_open_cache           | 431   || table_open_cache_instances | 16    |+----------------------------+-------+2 rows in set (0.06 sec)

4、thread_cache_size

为了加快连接数据库的速度,MySQL 会缓存一定数量的客户服务线程以备重用,通过参数 thread_cache_size 可控制 MySQL 缓存客户服务线程的数量。
说明:这就相当于在MySQL的服务端开启了一个线程池,客户端有请求过来,我们在线程池中拿出一个线程来执行任务处理。

mysql> show variables like 'thread_cache_size%';+-------------------+-------+| Variable_name     | Value |+-------------------+-------+| thread_cache_size | 8     |+-------------------+-------+1 row in set (0.00 sec)

一共缓存了8个线程信息。

5、innodb_lock_wait_timeout

该参数是用来设置InnoDB 事务等待行锁的时间,默认值是50ms , 可以根据需要进行动态设置。对于需要快速反馈的业务系统来说,可以将行锁的等待时间调小,以避免事务长时间挂起; 对于后台运行的批量处理程序来说, 可以将行锁的等待时间调大, 以避免发生大的回滚操作。

说明:如果在比较快速响应的业务系统中,如果没有拿到行锁,就直接报错即可,不需要让事务长时间响应。
可以看到,默认超时时间为50ms

mysql> show variables like 'innodb_lock_wait_timeout%';+--------------------------+-------+| Variable_name            | Value |+--------------------------+-------+| innodb_lock_wait_timeout | 50    |+--------------------------+-------+1 row in set (0.01 sec)

| Value |+--------------------------+-------+| innodb_lock_wait_timeout | 50 |+--------------------------+-------+1 row in set (0.01 sec)

感谢你能够认真阅读完这篇文章,希望小编分享的"MySQL并发参数调整的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

线程 参数 数量 时间 缓存 客户 服务 最大 数据 数据库 处理 控制 堆栈 篇文章 语句 调整 事务 同时 客户服务 客户端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 温州hpe机架式服务器哪家好 深圳综合网络技术 查询数据库是否有重复的数据 有服务器的单机游戏 软件开发中管理的作用 微软正版服务器系统 网络安全公司都有什么业务 腾讯云的云服务器是不是可以运行 网络安全风险整改报告 微赞人人小程序导入数据库 车托帮网络技术有限公司 数据库多个表关联查询sql 服务器装显卡不 如何用vs菜鸟级软件开发 数据库原理与应用多久能学会 北京安永网络安全咨询如何 湖南医院医疗系统软件开发 德州企业管理软件开发价格 如何登录服务器查找参数 农信社网络安全技能大赛 中东ip服务器 速达5000数据库对照 数据库中为什么采用视图 关于网络安全的进班演讲 科技给互联网企业带来价值 cs建立服务器 静安区智能网络技术开发产品 计算机网络技术跨校升本 银川在线能耗监测软件开发 计算机数据库视频素材
0