在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?

那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?

本期Out-man,讲述咱们MySQL DBA自己的Timeout。

先看一下比较常见的Timeout参数和相关解释:

connect_timeout

The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake.

interactive_timeout

The number of seconds the server waits for activity on an interactive connection before closing it.

wait_timeout

The number of seconds the server waits for activity on a noninteractive connection before closing it.

net_read_timeout

The number of seconds to wait for more data from a connection before aborting the read.

net_write_timeout

The number of seconds to wait for a block to be written to a connection before aborting the write.

从以上解释可以看出,connect_timeout在获取连接阶段(authenticate)起作用,interactive_timeout和wait_timeout在连接空闲阶段(sleep)起作用,而net_read_timeout和net_write_timeout则是在连接繁忙阶段(query)起作用。

获取MySQL连接是多次握手的结果,除了用户名和密码的匹配校验外,还有IP->HOST->DNS->IP验证,任何一步都可能因为网络问题导致线程阻塞。为了防止线程浪费在不必要的校验等待上,超过connect_timeout的连接请求将会被拒绝。

即使没有网络问题,也不能允许客户端一直占用连接。对于保持sleep状态超过了wait_timeout(或interactive_timeout,取决于CLIENT_INTERACTIVE标志)的客户端,MySQL会主动断开连接。

即使连接没有处于sleep状态,即客户端忙于计算或者存储数据,MySQL也选择了有条件的等待。在数据包的分发过程中,客户端可能来不及响应(发送、接收、或者处理数据包太慢)。为了保证连接不被浪费在无尽的等待中,MySQL也会选择有条件(net_read_timeout和net_write_timeout)地主动断开连接。

这么多Timeout足以证明MySQL是多么乐于断开连接。而乐于断开连接的背后,主要是为了防止服务端共享资源被某客户端(mysql、mysqldump、页面程序等)一直占用。

Mysql一直显示等待中_Mysql中的各种timeout相关推荐

  1. ef mysql不显示所有表_mysql中显示当前数据库下的所有表,包括视图。

    webpack初体验 本人菜鸟一枚,最近一直在研究webpack的使用,记录下自己的学习体会,由于网上关于webpack的资源(技术博客)太多,对于初学webpack的新手来说,看着五花八门的技术博客 ...

  2. mysql MDL锁如何解决_Mysql 中的MDL

    首先简单了解一下 mysql 的 sql 类型: 1.数据定义语言 DDL:Create.Drop.Alter 操作.用于定义库和表结构的. 2.数据查询语言 DQL:select.用于查询数据的. ...

  3. mysql的explain怎么看_mysql中explain用法详解

    如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序. explain的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 1 ...

  4. mysql获取当前的月_MYSQL中获取当前的年和月

    展开全部 select year(curdate()),month(curdate()),day(curdate()); select weekofyear(curdate()); 有点细微的差别,w ...

  5. mysql日期隐式转换_mysql中的隐式转换

    什么隐式类型转换? 在MySQL中: 当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.则会发生转换隐式 也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字.看到 ...

  6. mysql去除select换行符_MySQL中去除字段中的回车符和换行符

    问题: 在使用[ load data infile 'D:/node.txt' into table node fields terminated by '\t'; ]语句批量导入如下图所示的aaa. ...

  7. mysql创建临时表 主键_MySQL中临时表的基本创建与使用教程

    当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询. ...

  8. mysql 子查询怎么写_MySQL中两种子查询的写法

    MySQL的测试环境 测试表如下 create table test_table2 ( id int auto_increment primary key, pay_id int, pay_time ...

  9. mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法

    在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...

最新文章

  1. Docker学习(四)-----Docker容器常用命令
  2. 配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的...
  3. android按钮点击事件(多种方法实现)
  4. deep$wide keras
  5. c++17(20)-双向循环链表(不依赖具体数据)
  6. [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
  7. Leecode 222. 完全二叉树的节点个数——Leecode日常刷题系列
  8. 查看ubuntu linux开放的端口以及控制端口范围
  9. 【Python】Error:'int' object is not callable
  10. MySQL基础(一)介绍和配置
  11. 无心剑中译迪米特利·马丁《我是谁》
  12. 理解Python装饰器(Decorator)
  13. MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)
  14. Facebook最新研究:全局一致的视频深度估计
  15. java防xss攻击_java 防止xss攻击
  16. Flash cs4新增内容:三维效果
  17. POJ P3764 The xor-longest Path
  18. RAC知识更新之-RAC单节点启动(摘自文平书)
  19. jQuery类似QQ空间时间轴效果_事件展示时光轴js特效代码
  20. 360网上商城:链接生态与终端

热门文章

  1. 洛谷——P1151 子数整数
  2. ❤️关于 idea 安装 Vue 插件后新建文件不显示 Vue Component 的问题及解决方法❤️
  3. Vue packages version mismatch:- vue@2.6.14 - vue-template-compiler@2.6.11解决方法
  4. npm login 登录失败,报E500 Internal Server Error - PUT https://registry.npm.taobao.org/-/user/org.couchdb
  5. halcon——在图形窗口中画坐标系
  6. vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)...
  7. @wraps 修饰器:让你的 Python 代码更加简短可爱 | 从简单实例来认识它
  8. CentOS 5/6下安装Axel插件加速yum下载
  9. VSCode下Pytorch无法自动补全的问题
  10. React Native 0.20官方入门教程