MySQL – wait_timeout变量
作者:互联网
我一直试图通过在我的CentOS机器上更改MySQL(5.1.67)中的wait_timeout变量来解决我认为可能有帮助的问题.
所以,我用我想要的值(180)更新了/etc/my.cnf,并重新启动了MySQL,但现在我很惊讶地发现我为wait_timeout获取了不同的值,具体取决于我的显示方式(见下文) :
mysql> show global variables like "%wait%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 180 |
+--------------------------+-------+
3 rows in set (0.00 sec)
mysql> show variables like "%wait%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+
3 rows in set (0.00 sec)
我猜第二个查询显示会话变量,而不是全局变量,但我不明白为什么他们会退出我的MySQL会话,重新启动MySQL,然后重新登录.他们怎么会不一样?而且,我想,如何确保相同的值(180)在所有内容中保持一致?
任何建议/帮助表示赞赏.谢谢.
解决方法:
On thread startup, the session wait_timeout value is initialized from
the global wait_timeout value or from the global interactive_timeout
value, depending on the type of client (as defined by the
CLIENT_INTERACTIVE connect option to mysql_real_connect()). See also
interactive_timeout.
由于您是通过命令行而不是脚本进行连接,因此将CLIENT_INTERACTIVE自动用作连接选项是有意义的.因此,正在使用interactive_timeout
值,默认值为28800.
要使会话wait_timeout值为180,请将interactive_timeout值更新为180.
至于为什么会这样,我只能推测.但是,作为一名程序员,我知道只要在检查执行某个操作时只需要查找一个值,而不是必须检查多个值,并确保每次我都检查所有这些值,这样更有用想检查一下.
更明确地说,在这种情况下,每次需要wait_timeout值时,最好只需要检查,而不是wait_timeout和interactive_timeout.它通过使用适当的值自动初始化会话wait_timeout来帮助保持代码可维护,然后只需检查一个值.否则会引发错误,因为每次需要执行涉及此超时的事情时,可能无法检查这两个值.
标签:mysql,waits 来源: https://codeday.me/bug/20190806/1601075.html