connect_timeout
在客户端建立连接阶段,MySQL等待客户端的连接packet,超过了connect_timeout之后MySQL会回应bad handshake并断开连接。该参数默认为10,单位秒。
MySQL timeout类参数

delayed_insert_timeout
废弃参数,MySQL不再支持延迟插入。

have_statement_timeout
是否开启语句执行超时
MySQL timeout类参数

MAX_EXECUTION_TIME
select语句的执行超时时间,只针对select语句。设为0表示不限制执行时间。
也可以在语句级别以hint的方式来指定个别语句SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE ..,对于包含多个select的SQL,如union,MAX_EXECUTION_TIME是针对整个SQL而言,但必须在第一个select时就指定hint。
对于存储过程中的select,忽略执行超时限定。
MySQL timeout类参数

innodb_lock_wait_timeout
等待行锁的超时时间,单位为秒。如果等待行锁超时,会遇到以下报错:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
同时,等待行锁超时的语句会回滚,注意不是整个事务回滚。如果需要回滚整个事务,可以开启innodb_rollback_on_timeout,但需要在启动实例时就开启。
innodb_lock_wait_timeout只应用于行锁,因为表锁并不是innodb引擎层面,而是server层面的,所以innodb_lock_wait_timeout对于表锁是不起效的。
innodb_lock_wait_timeout也可以用来处理死锁问题,但是如果已经开启了innodb_deadlock_detect,则死锁问题不会考虑innodb_lock_wait_timeout,而是每个行锁都会马上检测是否引发了死锁。
任何客户端都可以设定语句级别的innodb_lock_wait_timeout,但全局级别的innodb_lock_wait_timeout需要Super权限。
MySQL timeout类参数

innodb_rollback_on_timeout
控制是否在事务超时的时候回滚事务,即事务内有语句触发了innodb_lock_wait_timeout。默认为OFF。
但需要注意,如果事务是以start transaction或begin显示启动,触发innodb_rollback_on_timeout回滚事务以后,并没有关闭事务,也就是说事务的操作回滚了,但是事务并没有结束,后续的语句也会归属于这个事务,直到执行commit或rollback或隐式提交。

interactive_timeout
交互式连接的空闲超时时间,单位为秒。
即在mysql_real_connect()函数中使用了CLIENT_INTERACTIVE选项。例如MySQL客户端。
而JDBC就是非交互式的连接。
MySQL timeout类参数

wait_timeout
非交互式连接的空闲超时时间,单位为秒。
如interactive_timeout的解释。
当一个用户连接线程创建成功,wait_timeout参数会根据连接的类型(交互和非交互),来继承interactive_timeout或wait_timeout的值。
MySQL timeout类参数

lock_wait_timeout
等待MDL的超时时间,单位为秒,取值范围1-31536000(一年),默认是一年。
lock_wait_timeout不应用于隐式的系统表的MDL锁等待,例如grant操作隐式地修改mysql.user表,可能会发生MDL,但等待时间不受lock_wait_timeout的限制。
而对系统表的显式使用则应用lock_wait_timeout,例如select … from mysql.user。
MySQL timeout类参数

net_read_timeout
MySQL在读取客户端数据时的空闲等待超时时间,这跟wait_timeout是不一样的,容易混淆。
例如客户端在跑一个巨大数据量的load data,但是由于网络问题,MySQL在读取客户端信息期间突然读不到数据了,就会等待net_read_timeout这么长的时间,超时就断开连接。
MySQL timeout类参数

net_write_timeout
MySQL在写一个block到一个连接的等待超时时间。与net_read_timeout类似。
MySQL timeout类参数

slave_net_timeout
在等待主库或从库的后续数据的超时时间,单位为秒,默认60,设置后在重启从库复制后生效。
MySQL timeout类参数

rpl_stop_slave_timeout
控制stop slave命令的前端等待时间,单位为秒,取值范围2-31536000(一年),默认是一年。
例如发出stop slave,但是由于复制线程由于某些原因无法停下,所以stop slave暂时无法执行完成,所以客户端会一直卡住,而rpl_stop_slave_timeout控制客户端卡住的时间。
需要注意的是,虽然超过rpl_stop_slave_timeout后会提示操作未完成并且返回操作界面,但是Stop slave命令仍然会在后台执行,等到复制线程不繁忙可以停止的时候,就会停止从库复制。
MySQL timeout类参数

相关文章:

  • 2021-10-09
  • 2022-12-23
  • 2021-07-11
  • 2021-07-06
  • 2021-10-16
  • 2022-02-15
  • 2021-12-05
猜你喜欢
  • 2021-08-19
  • 2021-05-04
  • 2021-08-15
  • 2021-08-17
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案