MyBatis常见面试题2:数据库链接中断如何处理?
题目:我们知道,数据库的访问底层是通过tcp实现的,如果数据库链接中断,那么应用程序是不知道的,是探测不出的,那么程序会卡住,一直在等待,会等待吓人的几十分钟,这种情况会把人郁闷死,真不如及时来个弹框,告诉用户系统暂时无法使用,让用户离开呢。所以,面对数据库连接中断的异常,该怎么设置mybatis呢?
答案:要想吃透这个问题,要明白链接中断产生的原因。这里面会涉及到网络通信的问题。在数据库链接中,connection操作可不是计算1+1这样的形式,它低层是个循环处理过程,既然是循环处理过程那么自然就跟时间扯上关系了,跟时间有关的设置有:max_idle_time,connect_timeout。max_idle_time表明最大的空闲时间,超过这个时间socket就会关闭,这样操作系统会省心省力一些,毕竟操作系统维持一个socket也是花费不少精力的。connect_timeout表明链接的超时时间,我们知道,网络环境就是跟潮水一样,一波一波的,总是在波动,既是数据库服务器活的杠杠的,但是因为网络用塞,客户端仍然连不上服务器端,这个时候就要设置timeout,别一直傻等着。