zoukankan      html  css  js  c++  java
  • MySQL

    【1】分别是什么

    ① interactive_timeout

    官网说明如下:MySQL官网地址

    MySQL服务器关闭交互式连接前等待的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。参数默认值:28800秒(8小时)

    ② wait_timeout

    MySQL服务器关闭非交互连接之前等待的秒数。在会话启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型–由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义。参数默认值:28800秒(8小时)。

    什么是交互连接,什么是非交互连接?

    通过MySQL 客户端连接数据库的是交互会话,通过jdbc等程序连接数据库的是非交互会话。

    【2】继承关系

    ① 单独修改全局interactive_timeout

    set GLOBAL interactive_timeout=1000;
    1
    分别查看全局、会话变量值:

    show GLOBAL VARIABLES like '%timeout%';
    show VARIABLES like '%timeout%';
    1
    2


    分析如下:

    在交互模式下,session和global级别的 interactive_timeout 继承了 interactive_timeout global的值。而 wait_timeout 的值,session级别继承了interactive_timeout。global级别的wait_timeout 则不受影响 。

    ② 设置session级别的interactive_timeout

    set interactive_timeout = 1100;
    1


    分析如下:

    无论全局还是会话级别的wait_timeout值并不受session级别的interactive_timeout的值的影响。

    ③ 同时设置全局值,且不同

    set GLOBAL interactive_timeout = 1300;
    set GLOBAL wait_timeout = 1400;
    1
    2
    查看全局变量值:

    show GLOBAL VARIABLES like '%timeout%';
    1

    查看会话变量值:

    show VARIABLES like '%timeout%';
    1


    分析如下:

    session级别的wait_timeout 继承global 级别的 interactive_timeout 的值。 global级别的wait_timeout 则不受影响。在没有改变 interactive_timeout的值的情况下,去修改wait_timeout的值, 结果无效。

    如上是交互式连接测试下结果:交互式连接的wait_timeout 继承于global的interactive_timeout。

    而非交互是连接结果如下:非交互式连接的wait_timeout继承于global的wait_timeout。

    【3】项目异常与值设置

    项目使用程序连接数据库,那么就属于非交互连接了,就需要着重考虑如何设置wait_timeout值。

    常见问题如下:

    ① The last packet successfully received from the server was 23,579 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
    Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

    ② MySQL server has gone away

    值设置

    wait_timeout默认值为28800,大小需要根据项目来定。
    wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放。
    过小容易遇到MySQL server has gone away ,死锁等待等问题。

    【4】总结

    控制连接最大空闲时长的wait_timeout参数。
    对于非交互式连接,类似于jdbc连接,wait_timeout的值继承自服务器端全局变量wait_timeout。
    对于交互式连接,类似于mysql客户单连接,wait_timeout的值继承自服务器端全局变量interactive_timeout。
    判断一个连接的空闲时间,可通过show processlist输出中Sleep状态的时间。
    超时时间只对非活动状态的connection进行计算。
    超时时间只以session级别的wait_timeout 为超时依据,global级别只决定session初始化时的超时默认值。
    【Tips】: 参考文档

    MySQL timeout相关参数解析和测试

    MySQL中wait_timeout与interactive_timeout区别

    MySQL官网API
    ————————————————
    版权声明:本文为CSDN博主「流烟默」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接: https://blog.csdn.net/j080624/article/details/80585195

  • 相关阅读:
    模拟退火、禁忌搜索、迭代局部搜索求解TSP问题Python代码分享
    多起点的局部搜索算法(multi-start local search)解决TSP问题(附Java代码及注释)
    爬取一定范围内的地图兴趣点并生成地点分布图
    Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码
    Python爬虫系列
    干货 | 蚁群算法求解带时间窗的车辆路径规划问题详解(附Java代码)
    10分钟教你Python爬虫(下)--爬虫的基本模块与简单的实战
    vs code 打开文件时,取消文件目录的自动定位跟踪
    eclipse自动补全导致变量会跟上String后缀的问题解决
    16. nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "auditUnitName"
  • 原文地址:https://www.cnblogs.com/railgunman/p/12121602.html
Copyright © 2011-2022 走看看