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存储时间出现不一致的问题
Apr 28 MySQL
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 MySQL
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
MySQL数据库压缩版本安装与配置详细教程
May 21 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
浅谈mysql返回Boolean类型的几种情况
Jun 04 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
mysql 获取时间方式
Mar 20 MySQL
Mysql中@和@@符号的详细使用指南
Jun 05 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 MySQL
MyBatis 动态SQL全面详解
MySQL中datetime时间字段的四舍五入操作
mysql如何能有效防止删库跑路
Oct 05 #MySQL
浅谈MySQL表空间回收的正确姿势
浅谈MySQL函数
Oct 05 #MySQL
Mysql binlog日志文件过大的解决
Oct 05 #MySQL
MySQL修炼之联结与集合浅析
You might like
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
Symfony生成二维码的方法
2016/02/04 PHP
PHP 类与构造函数解析
2017/02/06 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
JavaScript中的property和attribute介绍
2011/12/26 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python实现简单多线程任务队列
2016/02/27 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
python实现祝福弹窗效果
2019/04/07 Python
【python】matplotlib动态显示详解
2019/04/11 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
学校师德师风整改措施
2014/10/27 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
小学语文教学反思范文
2016/03/03 职场文书