MySQL中的wait_timeout值
假如你没有修悔改MySQL的设置,缺省环境下,wait_timeout的初始值是28800。 wait_timeout过大有破绽,其浮现就是MySQL里大量的SLEEP历程无法实时开释,拖累体系机能,不外也不能把这个指配置的过小,不然你可 能会遭碰着“MySQL has gone away”之类的题目,凡是来说,我认为把wait_timeout配置为10是个不错的选择,但某些环境下也许也会出题目,好比说有一个CRON剧本, 个中两次SQL查询的隔断时刻大于10秒的话,那么这个配置就有题目了(虽然,这也不是不能办理的题目,你可以在措施里时不时mysql_ping一下, 以便处事器知道你还在世,从头计较wait_timeout时刻): # vi /etc/my.cnf [mysqld] wait_timeout=10 # /etc/init.d/mysql restart 不外这个要领太生硬了,线上处事重启无论怎样都应该尽也许停止,看看如安在MySQL呼吁行里通过SET来配置: mysql> set global wait_timeout=10; mysql> show global variables like 'wait_timeout'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | wait_timeout | 10 | +----------------------------+-------+ 这里一个轻易把人搞蒙的处所是假如查询时行使的是show variables的话,会发明配置仿佛并没有见效,这是由于纯真行使show variables的话就等同于行使的是show session variables,查询的是会话变量,只有行使show global variables,查询的才是全局变量。 收集上许多人都诉苦说他们set global之后行使show variables查询没有发明改变,缘故起因就在于夹杂了会话变量和全局变量,假如仅仅想修改会话变量的话,可以行使相同set wait_timeout=10;可能set session wait_timeout=10;这样的语法。 另一个值得留意的是会话变量wait_timeout初始化的题目,这一点在手册里已经明晰指出了,我就直接拷贝了: 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()). MySQL大拿Jeremy Zawodny曾在他的文章Fixing Poor MySQL Default Configuration Values内里列出了几个很恶心的MySQL缺省配置,不外没包括wait_timeout,但我认为它也应该算一个,每次新装MySQL后最好都记得修改它。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |