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 24 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
通过shell脚本对mysql的增删改查及my.cnf的配置
Jul 07 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 MySQL
mysql序号rownum行号实现方式
Dec 24 MySQL
MyBatis 动态SQL全面详解
MySQL中datetime时间字段的四舍五入操作
mysql如何能有效防止删库跑路
Oct 05 #MySQL
浅谈MySQL表空间回收的正确姿势
浅谈MySQL函数
Oct 05 #MySQL
Mysql binlog日志文件过大的解决
Oct 05 #MySQL
MySQL修炼之联结与集合浅析
You might like
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
javascript的delete运算符知识点总结
2019/11/19 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
Python 加密的实例详解
2017/10/09 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
Python函数式编程实例详解
2020/01/17 Python
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
学院书画协会部门职责
2013/11/28 职场文书
高校自主招生自荐信
2013/12/09 职场文书
七年级英语教学反思
2014/01/15 职场文书
销售简历自我评价
2014/01/24 职场文书
网络程序员自荐信
2014/01/25 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
新农村建设标语
2014/06/24 职场文书
个人党性分析总结
2015/03/05 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
毕业实习感受与体会
2015/05/26 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫