「MySQL」- 与超时有关的变量

内容简介

本文将介绍在MySQL中常见的“超时变量”,以及他们所代表的含义、所控制的行为。

注意事项

本文所说的“超时变量”是指变量名中带有“timeout”的变量。本文所列举的“超时变量”是由SHOW VARIABLES LIKE '%timeout%';语句输出的变量。

与超时有关的变量

# interactive_timeout

在关闭”交互连接”之前,等待活动的时间,这允许客户端在interactive_timeout秒内不活动。

“交互式客户端”指的是在mysql_real_connect()中使用CLIENT_INTERACTIVE打开的连接,允许在关闭连接前的interactive_timeout秒内不活动。“交互式客户端”的wait_timeout会被设置为interactive_timeout的值。

# wait_timeout

在关闭“非交互连接”之前,等待活动的时间。

在线程启动时,在会话wait_timeout变量的值会被设置为全局wait_timeout变量的值,或者被设置为全局interactive_timeout的值,具体取决与客户端的连接。

# connect_timeout

在建立连接是使用该变量。告诉MySQL服务器在响应“Bad handshake”之前,等待来自客户端的连接数据包的时间。

delayed_insert_timeout

innodb_flush_log_at_timeout

innodb_lock_wait_timeout

innodb_rollback_on_timeout

lock_wait_timeout

net_read_timeout

net_write_timeout

rpl_stop_slave_timeout

slave_net_timeout

附加说明

# interactive_timeout、wait_timeout

当运行查询时,这两个时间都被重置为0值。在交互模式下,则interactive_timeout才生效;非交互模式下,则wait_timeout生效。

但是,我依旧没有GET到这个点:这个两个参数在实际的场景中到底控制的是什么?这两种连接的区别是什么?意义在哪里?

参考文献

MySQL Server Administration/The MySQL Server/Server System Variables
What is the difference between wait_timeout and interactive_timeout?
MySQL net_write_timeout vs wait_timeout and protocol notes
mysql.connect_timeout in php vs connect_timeout in mysql
设置Mysql的连接超时参数wait_timeout、interactive_timeout