Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL超时配置正确打开方式

MySQL超时配置正确打开方式

作者头像
只喝牛奶的杀手
发布于 2025-05-20 11:06:23
发布于 2025-05-20 11:06:23
10000
代码可运行
举报
运行总次数:0
代码可运行

一切基于最近两天帮排查数据库阻塞问题说起,是这样的一个更新方法执行超时之后,一个事务在测试环境一直Runing,一直没提交也没回滚,相关的行操作也被阻塞掉。按说Spring Boot对数据库中都设置connection-timeout,超时的时候自动触发异常会自动回滚。不至于测试环境这个服务不可用。

数据库连接池用的hikari,但是我们对这个connection-timeout理解对吗?spring.datasource.hikari.connection-timeout:这个是获取连接的超时时间,就是从连接池返回连接的超时时间。

ConnectionTimeout来自GitHub的解释:

This property controls the maximum number of milliseconds that a client (that's you) will wait for a connection from the pool. If this time is exceeded without a connection becoming available, a SQLException will be thrown. Lowest acceptable connection timeout is 250 ms. Default: 30000 (30 seconds)

SQL执行超时时间设置:

JDBC可以直接使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Statement.setQueryTimeout

Spring 可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Transactional(timeout=10)

MyBatis-Plus可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mybatis-plus.configuration.default-statement-timeout

MyBatis-XML文件可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<select id="" timeout="">xxx</select>

高级别的timeout依赖于低级别的timeout,只有当低级别的timeout无误时,高级别的timeout才能确保正常。超时时间一般有发起方/调用方设置。

大多时候我们线上遇到此种问题,找出对应的事务线程ID,赶紧去kill对应事务的进程。实在不行就用重启大法,事后大多数的做法是优化SQL,优化事务。但是SQL执行的超时时间还要设置的。避免系统在卡顿的时候导致事务阻塞,独占锁占用,其他事务锁等待。

我们该怎么样保护系统?分布式锁,乐观锁,X锁,间隙锁,大事务对数据行操作顺序不一致,我们在开发设计的时候应该怎么做?越是细节越是对技术的基础要求越高。只有稳定的架构我们再谈扩展性才严谨,在不稳定的架构上谈扩展只会给自己慢慢挖坑。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【追光者系列】HikariCP源码分析之故障检测那些思考 fail fast &amp; allowPoolSuspension
由于时间原因,本文主要内容参考了 https://segmentfault.com/a/1190000013136251,并结合一些思考做了增注。
用户1655470
2018/07/24
1.4K0
深入理解数据库编程中的超时设置
connect timeout和socket timeout都属于TCP层面的超时。
田守枝
2019/05/21
9.7K0
深入理解数据库编程中的超时设置
揭秘JDBC超时机制
在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢复了网络,但业务系统却还是无法工作。 通过分析系统的thread dump发现,业务系统停在了JDBC API的调用上。20分钟后,系统仍处于WAITING状态,无法响应。30分钟后,系统抛出异常,服务恢复正常。
Bug开发工程师
2018/07/23
2.2K0
揭秘JDBC超时机制
mysql connection failed(mysql mvcc)
先给大家简述一下我的坑吧,(我用的是mysql,至于oracle有没有这样的问题,有心的小伙伴们可以测试一下哈),
全栈程序员站长
2022/07/26
6460
mysql connection failed(mysql mvcc)
MySQL 连接挂死了!该如何排查?
近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令人感到头疼,一来这类问题有时候属于“偶发”现象,难以在环境上快速复现;二来则是可靠性问题的定位链条有时候变得很长,极端情况下可能要从 A 服务追踪到 Z 服务,或者是从应用代码追溯到硬件层面。
程序员小富
2022/12/10
3.5K0
MySQL 连接挂死了!该如何排查?
数据库链接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
鱼找水需要时间
2023/03/15
2.3K0
数据库链接池
Spring Boot配置属性
摘要:springboot数据库连接池使用策略以及对应的配置属性 正文: springboot数据库连接池使用策略 springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a pooling DataSource. Here’s the algorithm for choosing a specific implementation: W
itliusir
2018/05/21
2.1K0
【追光者系列】HikariCP 源码分析之从 validationTimeout 来讲讲 2.7.5 版本的那些故事
摘要: 原文可阅读 http://www.iocoder.cn/HikariCP/zhazhawangzi/validationTimeout 「渣渣王子」欢迎转载,保留摘要,谢谢!
芋道源码
2019/10/29
1.6K0
【追光者系列】HikariCP 源码分析之从 validationTimeout 来讲讲 2.7.5 版本的那些故事
深入探讨:Spring与MyBatis中的连接池与缓存机制
在现代应用程序开发中,性能优化是一个永恒的话题。而在企业级Java应用开发中,Spring和MyBatis是两种非常流行的框架,它们的连接池和缓存机制对应用程序的性能有着至关重要的影响。本文将深入探讨Spring和MyBatis中的连接池和缓存机制,从基本概念到高级应用,全面覆盖这两个框架中的性能优化技术。
九转成圣
2024/06/16
3830
自定义HikariCP连接池
官方解释: 快速、简单、可靠。HikariCP 是一个“零开销”的生产就绪 JDBC 连接池。大约 130Kb,库非常轻。
ha_lydms
2023/08/10
2.2K0
自定义HikariCP连接池
springboot的配置文件
spring.dao.exceptiontranslation.enabled 是否开启PersistenceExceptionTranslationPostProcessor,默认为true
张哥编程
2024/12/19
1440
十二、Hikari:Apparent connection leak detected连接泄露分析
leak-detection-threshold:用来设置连接被占用的超时时间,单位为毫秒,默认为0,表示禁用连接泄露检测。
用户1422411
2022/06/25
3.2K0
如何解决 DataAccessResourceFailureException 和数据库通信错误 - 完整解决方案
在开发基于Spring框架的Java应用时,遇到 DataAccessResourceFailureException 异常和数据库通信错误是常见的数据库连接问题。本文将为开发者提供详细的分析、排查步骤以及解决方案,帮助你有效解决 DataAccessResourceFailureException 异常以及与之相关的 数据库通信错误,确保应用的数据库连接稳定、性能优化。
猫头虎
2025/04/12
1840
记一次数据库查询超时优化问题
问题发现 在七月份时,经常发现有几个定时任务报错,查看了下异常原因,大概定位是数据库执行异常 ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Unsupported command ### The error may exist in class path resource [mapper/XXXXXXXXX-Mapper.xml] ### T
潜行前行
2021/10/20
1.2K0
Spring Boot 默认数据源 HikariDataSource 与 JdbcTemplate 初遇
1、本文介绍 Spring Boot 内部集成的 JDBC 模板访问 Mysql 数据库,环境:Java JDK 8 + Spring boot 2.1.5 + HikariDataSource + Mysql/Oracle + JdbcTemplate
全栈程序员站长
2022/09/10
2.1K0
Spring Boot 默认数据源 HikariDataSource 与 JdbcTemplate 初遇
数据库连接池配置-系统数据库慢排查
1.接下来我们分析数据库,用SHOW FULL PROCESSLIST快照的方式每5秒刷一下进程列表,发现列表这两个语句在长时间运行着,最高有达到80多秒。杀掉之前马上又上来了。可以确定是由于这两个语句长时间查询把连接数占满了。
oktokeep
2025/03/04
2011
聊聊jdbc的大数据量读写相关异常的防御措施
jdbc提供fetchSize参数来设置每次查询按fetchSize分批获取。不同的数据库的jdbc driver实现不一样。
code4it
2018/09/17
2.5K0
Mybatis源码初探——优雅精良的骨架
Mybatis是一款半自动的ORM框架,是目前国内Java web开发的主流ORM框架,因此作为一名开发者非常有必要掌握其实现原理,才能更好的解决我们开发中遇到的问题;同时,Mybatis的架构和源码也是很优雅的,使用了大量的设计模式实现解耦以及高扩展性,所以对其设计思想,我们也非常有必要好好理解掌握。(PS:本系列文章基于3.5.0版本分析)
夜勿语
2020/09/07
4760
SpringBoot 中 HikariCP 的相关配置
通常,可以在application.yml中对数据源进行相应的配置,从性能方面来讲,数据库连接池的优先级为:HikariCP > druid > tomcat-jdbc > dbcp > c3p0 。自 SpringBoot 2.0 起,默认的数据库连接池便是 HikariCP,在 pom 文件中引入spring-boot-starter-parent后便无需再引入 HikariCP 的依赖。 对于 HikariCP 的配置,主要可以从两个方面获取: 1. SpringBoot官方参考文档 2. HikariCP的github发布页 为了便于日后可能的查询,在此记录下详细的配置信息。
京剧猫
2023/03/04
3K0
MySQL中max_execution_time引发的血案
今天MySQL存储节点突然收到cpu持续100%的报警,持续时间长达数个小时。在控制台中通过show processlist查看当前进程,发现很多一模一样的SQL一直在运行,执行时间都超过数个小时。
林老师带你学编程
2021/12/07
2.5K0
MySQL中max_execution_time引发的血案
推荐阅读
相关推荐
【追光者系列】HikariCP源码分析之故障检测那些思考 fail fast &amp; allowPoolSuspension
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验