首页 > 数据库 >mysql超时参数详解

mysql超时参数详解

时间:2023-06-21 15:12:15浏览次数:37  
标签:interactive slave 详解 timeout mysql 超时 连接 wait

1. mysql超时参数详解

目录

1.1. 分类

1.1.1. 连接、网络类超时

共有如下几个:

1.1.2. connect_timeout:默认为10S

连接响应超时时间。服务器端在这个时间内如未连接成功,则会返回连接失败。

1.1.3. wait_timeout:默认是8小时,即28800秒

连接空闲超时时间。与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间。可以认为是服务器端连接空闲的时间,空闲超过这个时间将自动关闭。

1.1.4. interactive_timeout:默认是8小时,即28800秒

interactive_timeout和wait_timeoutu意义虽然相同,但是有使用对象有本质的区别。interactive_timeout针对交互式连接(比如通过mysql客户端连接数据库),wait_timeout针对非交互式连接(比如一般在PHP中使用PDO连接数据库,当然你可以设置CLIENT_INTERACTIVE选项来改变)。所谓的交互式连接,即在mysql_real_connect()函数中使用了CLIENT_INTERACTIVE选项

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

1.2. net_read_timeout:默认是30S

数据读取超时时间。在终止读之前,从一个连接获得数据而等待的时间秒数;当服务正在从客户端读取数据时

1.2.1. net_write_timeout:默认是60S

net_read_timeout控制何时超时。即客户端执行数据读取,等待多少秒仍未执行成功时自动断开连接。

1.2.2. 锁类超时

1.2.3. lock_wait_timeout

lock_wait_timeout是控制server层的锁超时
可以适当调小

不宜随便修改该值大小, 过多锁等待容易造成死锁和系统压力过大

1.2.4. innodb_lock_wait_timeout

innodb_lock_wait_timeout是控制InnoDB引擎层的锁超时

The length of time in seconds an InnoDB transaction waits for a row lock before giving up
innodb使用这个参数能够有效避免在资源有限的情况下产生太多的锁等待;指的是事务等待获取资源时等待的最长时间,超过这个时间还未分配到资源则会返回应用失败;参数的时间单位是秒,最小可设置为1s(一般不会设置得这么小),最大可设置1073741824秒(34年,一条语句锁等待超过30分钟估计业务该有反馈了),默认安装时这个值是50s,超过这个时间会报 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

1.3. innodb_rollback_on_timeout

从上面的结果中可以看到,DDL语句的超时时间是受lock_wait_timeout参数控制的
PS:注意,凡是需要获取MDL锁的操作都受到这个超时参数的影响,不单单是DDL语句,包含在表上的DML、DDL操作,以及视图、存储过程、存储函数、lock table,flush table with read lock语句等。但不适用于隐式访问系统表的语句,如:grant和revok

1.4. 复制类超时

1.4.1. delayed_insert_timeout

官方描述:
How many seconds an INSERT DELAYED handler thread should wait for INSERT statements beforeterminating.
为MyISAM INSERT DELAY设计的超时参数,表示INSERT DELAY handler线程在INSERT DELAY语句终止前等待这个INSERT语句的时间,注意是表示insert delay延迟插入的超时时间,不是insert语句。默认值是300S,从5.6.7开始被弃用(因为delayed insert功能被弃用)后续版本将移除。

1.4.2. rpl_semi_sync_master_timeout

官方描述:
A value in milliseconds that controls how long the master waits on a commit for acknowledgment from a slave before timing out and reverting to asynchronous replication. The default value is 10000 (10 seconds).
This variable is available only if the master-side semisynchronous replication plugin is installed.

为semi-sync复制时,主库在某次事务提交时,如果等待超过rpl_semi_sync_master_timeout多秒之后仍然没有接收到任何从库做回包响应,那么主库自动降级为异步复制模式,当主库探测到有备库恢复回包时,主库自动恢复到semi-sync复制模式。默认值为10000毫秒=10秒

1.4.3. rpl_stop_slave_timeout

官方描述:
In MySQL 5.6.13 and later, you can control the length of time (in seconds) that STOP SLAVE waits before timing out by setting this variable. This can be used to avoid deadlocks between STOP SLAVE and other slave SQL statements using different client connections to the slave. The maximum and default value of rpl_stop_slave_timeout is 31536000 seconds (1 year). The minimum is 2 seconds.
5.6.13之后引入的参数,控制stop slave 的执行时间,在重放一个大的事务的时候,突然执行stop slave,命令 stop slave会执行很久,这个时候可能产生死锁或阻塞,严重影响性能,可以通过rpl_stop_slave_timeout参数控制stop slave 的执行时间。默认值是31536000秒=1年

1.4.4. slave_net_timeout

官方描述:
The number of seconds to wait for more data from a master/slave connection before aborting the read.
Slave判断主库是否挂掉的超时设置,在设定时间内依然没有获取到Master的回应就认为Master已经挂掉了,后续根据超时重连参数设置进行重连主库的操作。默认值:3600S

1.5. IO类超时

1.5.1. innodb_flush_log_at_timeout

官方描述:
Write and flush the logs every N seconds. innodb_flush_log_at_timeout was introduced in MySQL 5.6.6. It allows the timeout period between flushes to be increased in order to reduce flushing and avoid impacting performance of binary log group commit. Prior to MySQL 5.6.6, flushing frequency was once per second. The default setting for innodb_flush_log_at_timeout is also once per second.
5.6.6引入,参数innodb_flush_log_at_trx_commit=1时,此超时参数不起作用,当innodb_flush_log_at_trx_commit=0/2时才起作用。5.6.6之后表示每innodb_flush_log_at_timeout秒一次的频率刷新redo log(在5.6.6之前是固定每秒一次刷新redo log,5.6.6之后刷新频率可以通过这个参数设置,当然,这个参数本身默认值也是1S)。

1.6. 总结:

MySQL命令行客户端下:global级别的interactive_timeout修改对当前连接不生效,但能影响新的连接的globa interactive_timeout、session interactive_timeout、session wait_timeout数值
MySQL命令行客户端下:session级别的interactive_timeout的修改除了能使session interactive_timeout数值改变之外没有什么作用
MySQL命令行客户端下:global级别的wait_timeout的修改除了能使global wait_timeout数值改变之外没有什么作用
MySQL命令行客户端下:session级别的wait_timeout能改变session wait_timeout数值其对当前连接生效。
python MySQL driver:修改global wait_timeout对当前连接不生效,但能影响新的连接的global wait_timeout、session wait_timeout
python MySQL driver:修改session wait_timeout只对当前连接生效
python MySQL driver:修改global interactive_timeout对当前连接不生效,能影响新的连接的global interactive_timeout、session interactive_timeout
python MySQL driver:修改session interactive_timeout除了能使session interactive_timeout数值改变之外没有什么作用

标签:interactive,slave,详解,timeout,mysql,超时,连接,wait
From: https://www.cnblogs.com/xulinforDB/p/17496254.html

相关文章

  • mysql索引及索引创建原则
    1.mysql索引及索引创建原则目录1.mysql索引及索引创建原则1.1.使用场景1.1.1.什么时候用索引1.1.2.索引的弱点1.1.3.MySQL会使用到索引的场景如下:1.2.查看表上的索引1.3.索引类型1.3.1.组合索引1.3.1.1.组合索引生效规则1.3.2.前缀索引1.3.3.函数索引1.3.4.唯一索......
  • mysql索引和基本概念
    1.mysql索引和基本概念目录1.mysql索引和基本概念1.1.声明1.2.什么是索引1.3.二分查找法(BinarySearch)1.4.二叉查找树(BST)1.4.1.二叉树的特点1.4.2.二叉树存在的问题1.5.平衡二叉树(AVLTree)1.5.1.平衡二叉树的特点1.6.索引需要存储什么1.7.B树的特点1.7.1.B树是......
  • mysql 密码插件 validate_password
    MySQL密码增强插件2016-07-0110:02pursuer.chen阅读(668)评论(0)编辑[收藏](javascript:void(0))介绍以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺......
  • MySQL笔记整理
    SELECT0+'123.00';SELECT0+'123.0qwe';SELECT0+'qwe1';SELECT0+null;SELECT'123.00'/4;SELECT'123.0qwe'/4;SELECT'qwe1'/4;SELECT'1qwe'/4;SELECTnull/4;SELECTconvert(......
  • MySQL自带的性能压力测试工具mysqlslap
    1.MySQL自带的性能压力测试工具mysqlslap目录1.MySQL自带的性能压力测试工具mysqlslap1.1.概述1.2.常用参数[options]详解1.3.测试范例:1.3.1.实例11.3.2.实例21.3.3.实例3(自定义sql语句)1.3.4.实例4(指定sql脚本)1.3.5.实际测试中的复杂情况。(指定表字段)1.4.测试结......
  • mysql proxy实现读写分离
    Mysql-proxy实现读写分离目录Mysql-proxy实现读写分离环境说明Mysql-proxy简介部署mysql-proxy服务读写分离测试总结环境说明Mysql-proxy简介mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等MySQLProxy就是这么一个中间层代理,简单的说,MySQLPro......
  • MySQL性能压测工具SysBench详解(非常详细)
    MySQL性能压测工具SysBench详解(非常详细)概述掌握数据库的性能情况是非常必要的。本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法;基准测试与压力测试简介1、什么是基准测试数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可......
  • mysql的用户和权限管理
    1.mysql用户和权限管理目录1.mysql用户和权限管理1.1.常用授权语句1.1.1.5.7以及以前的版本1.1.1.1.存储过程权限管理1.1.2.8.0的版本:1.1.3.删除用户及权限1.1.4.修改1.1.4.1.修改密码1.1.4.2.修改用户账号名称1.1.5.回收权限1.1.6.grant授权和直接操作权限表的区别......
  • Linux MySQL 5.7二进制 小版本升级
    LinuxMySQL5.7二进制小版本升级LinuxMySQL5.7二进制小版本升级MySQL5.7二进制安装在Unix/Linux上升级时,分为就地和逻辑升级方法。1就地升级就地升级包括关闭旧的MySQL服务器,用新的MySQL服务器替换旧的MySQL二进制文件或软件包,在现有数据目录上重新启动MySQL,以及运行mys......
  • 记一次mysql小版本升级
    记一次mysql小版本升级最近对后端组件进行安全扫描时,发现了一些轻微漏洞,为了避免后续部署后安全扫描出现问题,决定对mysql做一次版本升级。升级的原则是对mysql的二进制文件进行升级,若有主备节点,先升级从节点升级完成后将其提为主节点,然后再升级原主节点。升级步骤:mysql当前版本......