刷到一个说法,建议不要使用@transaction注解。这个说法不太准确,注解可以用,但标注的事务粒度不能太大,这样可能会引起数据库阻塞问题。以下介绍注解事务和编程式事务的两种用法。

关键字:声明式事务,编程式事务,显式事务

文章目录

    • 1.反例演示
    • 2.事务粒度过大-负面影响
    • 3.建议
      • (1)编程式事务代码模板

1.反例演示

在这里插入图片描述

案例中5,6才是一个原子操作,但是注解标注得太大了,执行外部调用时卡住了,导致事务阻塞会拖垮数据库。

2.事务粒度过大-负面影响

事务粒度过大可能会阻塞数据库并导致性能问题,具体影响如下:

阻塞数据库的主要表现
锁竞争加剧:

大事务持有锁的时间更长

更多数据行/表被锁定

其他事务需要等待这些锁释放

资源占用:

长时间占用数据库连接

未提交事务会占用UNDO日志空间

内存中维护的事务状态数据增多

具体影响
并发性能下降:

其他会话可能被阻塞等待锁释放

系统吞吐量降低

系统资源压力:

内存消耗增加

可能填满数据库的临时表空间或日志空间

风险增加:

死锁概率提高

事务失败时回滚代价高

可能导致连接池耗尽

3.建议

建议把事务粒度控制得更小一些再使用@Transactional注解。或者使用编程式事务,准确处理需要搞成事务的步骤。

(1)编程式事务代码模板

以下是编程式事务代码模板参考:

    @Autowiredprivate TransactionTemplate transactionTemplate;transactionTemplate.execute((transactionStatus)->{try {System.out.println("业务逻辑");} catch (Exception e) {transactionStatus.setRollbackOnly();// 标记为回滚log.error("服务异常");}return transactionStatus;});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921614.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921614.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921614.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别再看人形机器人了!真正干活的机器人还有这些!

每次提起“机器人”,你脑海中是不是立刻浮现出双足行走、拟人微笑、还能陪你聊天的那种“人形机器人”?但真相是:人形机器人并非更实用,只是满足了我们对“人类替代品”的幻想。事实上,机器人的世界远比我们想象的更丰…

垃圾回收,几种GC算法及GC机制

1.什么是垃圾回收?如何触发垃圾回收? 垃圾回收(GC)是自动管理内存的一种机制,它负责自动释放不再被程序引用的对象所占用的内存,这种机制减少内存泄漏和内存管理错误的可能性。可以通过多种方式触发:内存不足时&#x…

更智能的零售终端设备管理:合规、安全与高效

目录 引言:为什么零售连锁和自助终端需要更智能的设备管理? 典型应用场景 1. 便利店连锁 2. 大型超市 3. 加油站 4. 自助终端 核心功能,驱动高效与安全 1. 批量配置 2. 定时策略同步 3. 设备状态监控 4. Kiosk 模式,保…

Elasticsearch:向量搜索过滤 - 保持相关性

作者:来自 Elastic Carlos Delgado 仅执行向量搜索以找到与查询最相似的结果是不够的。通常需要过滤来缩小搜索结果。本文解释了在 Elasticsearch 和 Apache Lucene 中向量搜索的过滤是如何工作的。 Elasticsearch 拥有丰富的新功能,帮助你为自己的用例构…

Linux 性能调优之 OOM Killer 的认知与观测

写在前面 博文内容涉及到OOM Killer机制,以及利用 Cgroup/dmesg/BPF 观测 OOM Killer 事件,包括云原生环境下的 OOM Killer 机制的简单介绍 这是内存调优的最后一篇,之后会分享一些网络调优相关内容 理解不足小伙伴帮忙指正 😃,生活加油 我不再将这个世界与我所期待的,塑…

webrtc之高通滤波——HighPassFilter源码及原理分析

文章目录前言一、导读二、高通滤波过程1.HighPassFilter的创建1)HighPassFilter的作用2)开启条件3)开启配置2.高通滤波整体过程1)触发时机2)滤波器创建3)高通滤波过程三、算法实现1.原理1)滤波器…

《sklearn机器学习——聚类性能指数》同质性,完整性和 V-measure

函数:homogeneity_score 参数: labels_true: array-like, shape [n_samples] 样本的真实标签。 labels_pred: array-like, shape [n_samples] 样本的预测标签。返回值: h: float 同质性得分,在0到1之间,值越大表示聚…

HarmonyOS 应用开发新范式:深入剖析 Stage 模型与 ArkTS 状态管理

好的,请看这篇关于 HarmonyOS 应用开发中 Stage 模型与 ArkTS 状态管理的技术文章。 HarmonyOS 应用开发新范式:深入剖析 Stage 模型与 ArkTS 状态管理 引言 随着 HarmonyOS 4、5 的发布以及 API 12 的迭代,HarmonyOS 的应用开发范式已经全面…

一个Java的main方法在JVM中的执行流程

一个Java的main方法在JVM中的执行流程可以分为​​四大阶段​​:​​加载 -> 链接 -> 初始化 -> 执行​​。// HelloWorld.java public class HelloWorld {public static void main(String[] args) {String message "Hello, JVM!";System.out.p…

聚焦诊断管理(DM)的传输层设计、诊断服务器实现、事件与通信管理、生命周期与报告五大核心模块

聚焦诊断管理(DM)的传输层设计、诊断服务器实现、事件与通信管理、生命周期与报告五大核心模块,明确 UDS(ISO 14229-1)与 SOVD(ASAM 服务化诊断)的功能逻辑、交互流程及规范性要求(SWS_DM 系列)。 1 UDS 传输层(UDS Transport Layer) 作为 DM 与诊断客户端的 UDS …

关于npm的钩子函数

一、npm scripts 的生命周期钩子(Lifecycle Scripts) npm 提供了一些 ​​特殊的 script 名称​​,它们是 ​​生命周期钩子​​,会在特定时机 ​​自动执行​​。这些钩子包括: 1.prepublishOnly(在 npm publish之前执…

167.在Vue3中使用OpenLayers模仿共享单车,判断点是否放在规划的电子围栏内

一、前言大家好,这里分享一个 Vue3 OpenLayers 的小案例: 模仿共享单车的电子围栏功能,用户在地图上绘制停泊点时,系统会自动判断该点是否在规划好的电子围栏内(多边形或圆形)。这个功能在实际项目中有很大…

键盘上面有F3,四,R,F,V,按下没有反应,维修记录

打开游戏,按了好几遍F,结果都没反应,但是左右上下行走是没问题的。一脸懵逼???打开键盘测试网页,发现有一列没反应,F1不是,F1我定义了一个快捷键,跟测试冲突了…

8051单片机-成为点灯大师

第三章 成为点灯大师 1. 硬件设计 上一章说到,怎么点亮LED灯,很简单啊,就是把P2口设置成低电平就行了。接下来让我们更进一步,完成LED闪烁、流水灯实验2. 软件设计 2.1 LED闪烁实验 为了使LED闪烁,我们自然而然的想到要…

Rust 日志库完全指南:从入门到精通

GitHub 仓库: https://github.com/zhouByte-hub/rust-study ⭐ 如果这个项目对您有帮助,请给我一个 star! 在 Rust 生态系统中,日志处理是一个至关重要的环节。无论是开发小型应用还是大型系统,良好的日志记录都能帮助我们追踪问题…

【科研绘图系列】R语言绘制论文合集图

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍 数据准备与过滤 统计分析 可视化绘图 抗药性分析 系统发育分析 加载R包 数据下载 Supp figure 1 Fig 1a Fig 1c Fig 1d Fig 1e Fig 1f Supp figure 3 Supp figure 4 Supp figure 5…

【c++】从三个类的设计看软件架构的哲学思考

从三个类的设计看软件架构的哲学思考 文章目录从三个类的设计看软件架构的哲学思考前言一、OP类:系统工程的安全守护者设计特点设计哲学适用场景现实类比二、VarReviser类:版本控制的严谨管理者设计特点设计哲学适用场景现实类比三、Model类:…

人工智能优化SEO关键词的实战策略

本文聚焦智能技术如何革新关键词优化实践,系统解析提升网站排名的核心路径。重点探讨语义分析如何精准匹配用户意图、长尾词智能挖掘怎样解锁高潜力流量,并详解工具筛选高转化关键词的五大实用策略。通过实战案例说明技术如何突破流量增长瓶颈&#xff0…

【c++】c++第一课:命名空间

文章目录1.C的第⼀个程序2.命名空间2.1 namespace的价值2.2 namespace的定义2.3 命名空间使⽤最新的c标准(建议收藏) 1.C的第⼀个程序 C兼容C语⾔绝⼤多数的语法,所以C语⾔实现的helloworld依旧可以运⾏,C中需要把定义⽂件代码后…

版本发布流程手册:Release分支规范与Bug分级标准全解析

在软件交付日益高频、用户需求快速迭代的今天,版本发布流程的规范性直接决定了团队的交付效率、产品质量和用户满意度。然而,许多团队仍面临以下痛点: 发布混乱:分支管理随意,代码冲突频发;质量失控&#…