交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。
非交互式操作:就是你在你的项目中进行程序调用。比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接。那么这时候就是非交互式操作。
在之前,我基本上不关系这两个属性,都是用的是mysql服务商推荐的默认值,就是8小时。
但是,从昨天开始,由于在新网租用了一个空间,而他的mysql的wait_time设置了10s,所以引出来一系列的问题,就顺便来研究下。
或者这个标题可以改为“mysql的8小时自动关闭”问题,这个标题你到百度上搜搜,一搜一大堆,但是都没有讲明白,今天我就给大家来说说这两个值。
一、概念
1)interactive_time:是指如果空余Ns(N就是这个属性的值),那么就会自动关闭mysql的连接。关闭什么样的mysql连接?在之前,我们在《什么是mysql的交互式操作和非交互式操作?》 这篇文章中讲到,mysql是有两种操作方式,那就有两种连接的,一种是交互式,一种是非交互式。而这个属性控制的是交互式。就是你打开一个mysql客 户端黑窗口,进入操作之后,又隔了Ns你不操作了,之后你想继续操作,对不起,mysql会在之前关闭了你的那个连接,mysql会帮你自动重新连接。
2)wait_time:是指如果空余Ns(N就是这个属性的值),那么会自动kill掉mysql的一部分连接线程。这里的连接就是指的是非交互式连接。
总结下,就是用比较正规的术语讲:
(1)interactive_timeout:
参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)
(2)wait_timeout:
参数含义:服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)
这里有引出了另外一个概念:mysql_real_connect(),这个好理解,就是你不管什么连接,是交互式还是非交互式,你要操作mysql之前要必须执行完毕的方法,其实你可以理解成登录mysql,或者拿到mysql的一个连接。
二、如何查看、重新设置这两个值
这是我修改之后的。这是查看方法。
修改这两个值是分为两种修改的。