MySQL数据库超时设置配置的方法实例


Posted in MySQL onOctober 15, 2021

前言

最近备战京东双11,在配置MySQL的超时配置发现有很多地方可以设置。这么多超时的配置有什么影响,以及配置会有什么影响呢?今天的文章就让我来大家来分析一下。

1. JDBC超时设置

connectTimeout:表示等待和MySQL数据库建立socket链接的超时时间,默认值0,表示不设置超时,单位毫秒,建议30000

socketTimeout:表示客户端和MySQL数据库建立socket后,读写socket时的等待的超时时间,linux系统默认的socketTimeout为30分钟,可以不设置

2. 连接池超时设置

maxWait:表示从数据库连接池取链接,连接池没有可用连接时的等待时间,默认值0,表示无限等待,单位毫秒,建议60000

MySQL数据库超时设置配置的方法实例

3. MyBatis查询超时

defaultStatementTimeout:表示在MyBatis配置文件中默认查询超时间,单位秒,不设置则无线等待

MySQL数据库超时设置配置的方法实例

如果一些sql需要执行超过defaultStatementTimeout可以通过Mapper文件单独的sql的timeout进行配置

MySQL数据库超时设置配置的方法实例

4. 事务超时

事务超时用于控制事务执行的超时,执行时间是事务内所有代码执行总和,单位为秒。

MySQL数据库超时设置配置的方法实例

总结

高级别的timeout依赖于低级别的timeout,只有当低级别的timeout无误时,高级别的timeout才能确保正常。例如,当socket timeout出现问题时,高级别的statement timeout和transaction timeout都将失效。

1. Transaction Timeout

Spring提供的transaction timeout配置非常简单,它会记录每个事务的开始时间和消耗时间,当特定的事件发生时就会对消耗时间做校验,当超出timeout值时将抛出异常。

假设某个事务中包含5个statement,每个statement的执行时间是200ms,其他业务逻辑的执行时间是100ms,那么transaction timeout至少应该设置为1,100ms(200 * 5 + 100)。

2. Statement Timeout

statement timeout用来限制statement的执行时长,timeout的值通过调用JDBC的java.sql.Statement.setQueryTimeout(int timeout) API进行设置。不过现在开发者已经很少直接在代码中设置,而多是通过框架来进行设置。

在iBatis中,statement timeout的默认值可以通过sql-map-config.xml中的defaultStatementTimeout 属性进行设置。同时,你还可以设置sqlmap中select,insert,update标签的timeout属性,从而对不同sql语句的超时时间进行独立的配置。

3. Socket timeout

JDBC的socket timeout在数据库被突然停掉或是发生网络错误(由于设备故障等原因)时十分重要。由于TCP/IP的结构原因,socket没有办法探测到网络错误,因此应用也无法主动发现数据库连接断开。如果没有设置socket timeout的话,应用在数据库返回结果前会无期限地等下去,这种连接被称为dead connection。

为了避免dead connections,socket必须要有超时配置。socket timeout可以通过JDBC设置,socket timeout能够避免应用在发生网络错误时产生无休止等待的情况,缩短服务失效的时间。

不推荐使用socket timeout来限制statement的执行时长,因此socket timeout的值必须要高于statement timeout,否则,socket timeout将会先生效,这样statement timeout就变得毫无意义,也无法生效。

到此这篇关于MySQL数据库超时设置配置的文章就介绍到这了,更多相关MySQL数据库超时设置配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL查看表和清空表的常用命令总结
May 26 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
Apr 09 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
mysql如何查询连续记录
May 11 MySQL
MYSQL如何查看操作日志详解
May 30 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 MySQL
MySQL分布式恢复进阶
Jul 23 MySQL
MySQL索引失效十种场景与优化方案
May 08 MySQL
MyBatis 动态SQL全面详解
MySQL中datetime时间字段的四舍五入操作
mysql如何能有效防止删库跑路
Oct 05 #MySQL
浅谈MySQL表空间回收的正确姿势
浅谈MySQL函数
Oct 05 #MySQL
Mysql binlog日志文件过大的解决
Oct 05 #MySQL
MySQL修炼之联结与集合浅析
You might like
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
js 验证密码强弱的小例子
2013/03/21 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
vue addRoutes路由动态加载操作
2020/08/04 Javascript
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
python命令行参数用法实例分析
2019/06/25 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
django框架两个使用模板实例
2019/12/11 Python
Python文件操作基础流程解析
2020/03/19 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
深入浅析Python代码规范性检测
2020/07/31 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
C有"按引用传递"吗
2016/09/06 面试题
中专自我鉴定
2014/02/05 职场文书
志愿者活动总结
2014/04/28 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
安全教育培训心得体会
2016/01/15 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python
css3 选择器
2022/05/11 HTML / CSS