• Mysql并发参数调整
    • 1 max_connections
    • 2 back_log
    • 3 table_open_cache
    • 4 thread_cache_size
    • 5 innodb_lock_wait_timeout

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)

MySQL高级-MySQL并发参数调整相关推荐

  1. MySQL高级 - 并发参数调整

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

  2. MySQL高级-MySQL存储引擎

    MySQL存储引擎 1.MySQL体系结构 2. 存储引擎 2.1 存储引擎概述 2.2 各种存储引擎特性 2.2.1 InnoDB 2.2.2 MyISAM 2.2.3 MEMORY 2.2.4 M ...

  3. mysql 并发 参数_Mysql并发参数调整

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

  4. php fpm最大连接数,PHP最大连接数的设置及php-fpm高并发参数调整

    推荐:<PHP视频教程> 服务器中找到php-fpm.conf配置(有的会在引入的www.conf中)[global] pid = /usr/local/php/var/run/php-f ...

  5. MySQL高级-MySQL锁

    目录 1 锁概述 2.锁分类 3.Mysql 锁 4.MyISAM 表锁 4.1 如何加表锁 4.2 读锁案例 4.2.1.准备环境 4.2.2.加读锁后查询案例 4.2.3.加读锁后更新案例 4.3 ...

  6. MySQL高级-MySQL查询缓存优化

    MySQL查询缓存优化 1 概述 2 操作流程 3 查询缓存配置 4 开启查询缓存 5 查询缓存SELECT选项 6 查询缓存失效的情况 1 概述 开启Mysql的查询缓存,当执行完全相同的SQL语句 ...

  7. MySQL 高级 ———— MySQL逻辑架构图简介

    引言 本篇文章介绍MySQL的逻辑架构图. MySQL并不完美,但足够灵活,能够适应高要求环境.MySQL不仅可以嵌入到应用程序中,同时也可以支持数据仓库.内容搜索.和部署软件.高可用的冗余系统.在线 ...

  8. MySQL高级-MySQL应用优化

    MySQL应用优化 1 使用连接池 2 减少对MySQL的访问 2.1 避免对数据进行重复检索 2.2 增加cache层 3 负载均衡 3.1 利用MySQL复制分流查询 3.2 采用分布式数据库架构 ...

  9. 从前慢-Mysql高级及实战

    Mysql高级及实战 1 Linux 系统安装MySQL 1.1 下载Linux 安装包 https://dev.mysql.com/downloads/mysql/5.7.html#download ...

最新文章

  1. Java 8 - 04 类型检查、类型推断以及限制
  2. 原生js打印指定节点元素
  3. 刚刚!2020“中国高被引学者” 榜单发布:清华、北大、浙大位居内地前三!
  4. 四张图,读懂 BIO、NIO、AIO、多路复用 IO 的区别
  5. 开源WebMail客户端Intouch2.2beta导致IE6崩溃的原因和修改方法
  6. [zz] 高端HIFI发烧音频DAC解码芯片排名
  7. 【Unreal】关于实时编码(live coding)退出UE编辑器C++ Class消失的问题
  8. 圣思园Spring精髓-Spring的底层设计思想
  9. 如何制作一个简易的家庭记账系统
  10. 跪了,腾讯数据工程师用Python可视化绘制的中国GDP数据地图,大佬就是不一样
  11. python爬虫+数据分析之NBA球员LBJ13个赛季的数据分析
  12. Linux怎么将输入法添加,在Linux系统中给fcitx下的输入法添加自定义词库的方法
  13. 【08月13日】预分红股息率最高排名
  14. 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器以及一个连接互联网的路由器相连。图中的A,B和C都是100Mbit/s以太网
  15. 提高Java反射速度的方法以及对setAccessable的误解
  16. sqlite 导出CSV,身份证号码显示科学计数法
  17. 网站性能优化之CSS无图片技术
  18. AD_PCB 快捷键
  19. Android签名aab文件
  20. 关于正负样本不平衡问题的解决方法收集整理

热门文章

  1. 苹果最新专利曝光:苹果可能正研发可折叠iPhone
  2. 编写高效且优雅的 Python 代码
  3. 提高django model效率的几个小方法
  4. couchbase php,升级PHP7时couchbase扩展导入的bug
  5. redis lua 设置过期_详解 Redis 内存管理机制和实现
  6. 遇到一个valgrind自身的bug
  7. 95-910-172-源码-FlinkSQL-Flink SQL提升吞吐的利器 MicroBatch
  8. 【SQL】血缘解析 SQL parser 工具介绍
  9. 【kafka】Kafka 源码解析:Group 协调管理机制
  10. 【maven】mvn deploy 报错 Failed to deploy artifacts: Could not transfer artifact