大事务问题到底要如何解决?

news2024/11/17 3:44:45

文章目录

  • 大事务引发的问题
    • pom依赖
  • 解决方法
    • 1. 少用@Transactional 注解
    • 2. 将查询(select)方法放到事务外
    • 3. 事务中避免远程调用
    • 4. 事务中避免一次性处理太多数据
    • 5. 非事务执行
    • 6. 异步处理

大事务引发的问题

在 分 享 解 决 办 法 之 前 ,先 看 看 系 统 中 如 果 出 现 大 事 务 可 能 会 引 发 哪 些 问题
在这里插入图片描述

pom依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.3.22</version>
</dependency>

解决方法

1. 少用@Transactional 注解

@Resource

private TransactionTemplate transactionTemplate;


public void save(final User user) {
    transactionTemplate.execute ((status) -> {
        //doSameThing...
        return Boolean.TRUE;
    });
}

2. 将查询(select)方法放到事务外

@Resource
private TransactionTemplate transactionTemplate;


public void save(final User user) {
    queryData1 ();
    queryData2 ();
    transactionTemplate.execute ((status) -> {
        addData1 ();
        updateData2 ();
        return Boolean.TRUE;
    });
}

如果就是要使用 @ T r a n s a c t i o n a l 注 解 , 该 怎 么 拆 分 呢

在 本类中 注入自己,再进行调用,避免事务失效

@Service
public class ServiceA {
    @Resource
    private ServiceA serviceA;

    public void save(User user) {
        queryData1 ();
        queryData2 ();
        serviceA.doSave (user);
    }

    @Transactional(rollbackFor = Exception.class)
    public void doSave(User user) {
        addData1 ();
        updateData2 ();
    }
}

3. 事务中避免远程调用

远 程 调 用 的 代 码 可 能 耗 时 较 长 , 切 记 一 定 要 放 在 事 务 之 外

@Resource
private TransactionTemplate transactionTemplate;


public void save(final User user) {
    callRemoteApi ();
    transactionTemplate.execute ((status) -> {
        addData1 ();
        return Boolean.TRUE;
    });
}

4. 事务中避免一次性处理太多数据

解 决 办 法分 页 处 理

1000 条 数 据 ,分 50 页 ,一 次 只 处 理 20 条 数 据 ,这 样 可 以 大 大 减 少 大 事 务 的 出 现 。

5. 非事务执行

 @Resource
  private TransactionTemplate transactionTemplate;

  // .......

  public void save(final User user) {
      transactionTemplate.execute ((status) -> {
          addData ();
          return Boolean.TRUE;
      });
      addLog ();
      updateCount ();
  }

6. 异步处理

@Resource
private TransactionTemplate transactionTemplate;

//...

public void save(final User user) {
    transactionTemplate.execute ((status) -> {
        order ();
        return Boolean.TRUE;
    });
    sendMq ();
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款集成ST-link下载及虚拟串口的STM32F103C8T6最小系统板设计

前言 在以前的STM32单片机应用中&#xff0c;经常使用STM32F103C8T6最小系统板&#xff08;小蓝板&#xff09;作为主控。程序下载和串口交互都需要额外器件和接线&#xff0c;程序下载的话要用到ST-link&#xff0c;串口交互用到USB-TTL&#xff0c;常见的样子就下面这…

(历史上最详细的网络)华为初级网络工程师知识点总结(二)工作考研均受益

超级详细网络知识二一&#xff0c;关于IPV4和IPV6地址的介绍&#xff08;重点是IPV4&#xff09;1,IPV4地址的组成2&#xff0c;子网掩码的详解3&#xff0c;IP地址的分类和播的形式4&#xff0c;IP地址的分类可用地址5&#xff0c;IPV4的特殊地址&#xff0c;公网地址&#xf…

信息数据采集软件-什么工具可以快速收集信息

随着时代的不断的进步&#xff0c;我们已经悄然无息地步入了一个大数据信息时代&#xff0c;每个人在互联网上都离不开信息数据的汇总分析以及信息数据的应用&#xff0c;不管是亮化自己的信息数据&#xff0c;还是分析同行详细信息的数据。今天小编就教大家如何用信息抓取软件…

yapi文档转换jmx脚本

需求 需要自动生成接口测试脚本接口文档&#xff08;swagger/yapi/wiki&#xff09;很多&#xff0c;我不想一个一个去复制黏贴到jmeter 期望 一键自动生成接口测试脚本&#xff0c;解放双手&#xff0c;降低纯手力劳动占比&#xff0c;进而给自己提供更多的时间去思考、理解…

第九章:单调栈与单调队列

单调栈与单调队列一、单调栈1、什么是单调栈&#xff1f;2、单调栈的模板&#xff08;1&#xff09;问题&#xff1a;&#xff08;2&#xff09;分析&#xff1a;二、单调队列1、什么是单调队列2、单调队列模板&#xff08;1&#xff09;问题&#xff08;2&#xff09;分析一、…

深入浅出学习透析Nginx服务器的基本原理和配置指南「Https安全控制篇」

Https反向代理 之前的内容中我们主要针对于一些对安全性要求比较高的站点&#xff0c;可能会使用HTTPS&#xff08;一种使用SSL通信标准的安全HTTP协议&#xff09;&#xff0c;针对于HTTP 协议和SSL标准相信大家都知道了&#xff0c;在这里我就不为大家进行介绍了&#xff0c…

共建“医疗合规科技实验室”,美创科技实力护航医疗数据安全

11月15日-17日&#xff0c;由工业和信息化部、深圳市人民政府主办&#xff0c;中国互联网协会、广东省通信管理局、深圳市工业和信息化局等单位承办的2022中国互联网大会隆重召开。 在互联网医疗健康合规发展论坛上&#xff0c;医疗合规科技实验室合作伙伴计划正式启动&#xf…

scau Java综合性实验之Java源程序分析程序

1. 编写一个Java应用程序&#xff0c;实现对某个目录中的所有Java源程序文件&#xff08;包含该目录的子目录中的源程序文件&#xff09;进行统计。统计内容包括&#xff1a; (1) 目录中每个源程序文件的总行数和空白行数&#xff0c;文件的字节数&#xff1b; (2) 目录中所有源…

ADB调试--详细教程(附华为手机无法显示设备解决方法)

终端打开开发者模式&#xff0c;用数据线连接电脑&#xff0c;然后按照下面的步骤操作 1、开启开发者选项&#xff1a; 设置->关于设备->版本号&#xff08;连续点击5次&#xff09; 2、打开USB调试 在开发者选项中&#xff0c;找到USB调试&#xff0c;将此打开。 3、…

作为资深程序民工怎么能被性能优化难倒!原理与实战齐飞,源自大厂自然更专业!

性能优化是一个很复杂的工作&#xff0c;且充满了不确定性。它不像Java业务代码&#xff0c;可以一次编写到处运行(write once, run anywhere)&#xff0c;往往一些我们可能并不能察觉的变化&#xff0c;就会带来惊喜/惊吓。能够全面的了解并评估我们所负责应用的性能&#xff…

全渠道商城授权管控经销商,渠道商管理系统助力医药企业快速扩大渠道规模

随着医改的稳步推进&#xff0c;医药行业传统的以销售为主的扩张模式难以为继&#xff0c;国内药企面临创新转型。如何探寻医药数字化营销方法论&#xff0c;如何把握政策机遇和用户需求&#xff0c;利用数字化推动医药创新渠道破局&#xff0c;已成业内关注的重点。 后疫情时…

如何在win11中用双硬盘或移动硬盘装Ubuntu 20.04 双系统

首先明确一下思路&#xff0c;这个多硬盘的安装方式与单硬盘的方式没什么本质区别 下面介绍具体的方法&#xff1a; 1.下载Ubuntu系统镜像、制作系统盘 1.1 下载镜像 ubuntu20.04镜像下载&#xff1a;ubuntu20.04官网&#xff0c;点击进入下载 现在最新版是 Ubuntu 22.04.1…

ZX297520V3T:Codec NAU88C22驱动调试

一、音频驱动框架 ALSA(Advanced Linux Sound Architecture)是目前linux的主流音频体系结构。ALSA不仅在内核设备驱动层提供了alsa-driver,同时在应用层为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。为了方便调试,ALSA也提…

Spring~五种存储Bean对象的类注解、方法注解(@Bean)以及Bean对象的获取

目录 五种存储Bean对象的类注解 ​Controller Service Repository Component Configuration 方法注解Bean 使用Bean注解的常见问题 当一个类型有多个实例对象&#xff0c;使用类型获取就会报错 在容器中找不到Bean&#xff0c;不论通过什么方式来获取Bean对象都会报…

建设一个互联网医院系统要花多少钱?

建设一个互联网医院系统要花多少钱&#xff1f;很多人在筹备调研互联网医院建设后&#xff0c;仍然有很多问题答案不清楚&#xff0c;今天就给大家来聊一聊。 其实互联网医院看似简单&#xff0c;实则是一个较为复杂的过程&#xff0c;要想合法合规的开展线上诊疗业务&#x…

雷电模拟器dnconsole命令汇总

雷电模拟器之文件操作 删除相册中的文件 ldconsole adb --index 0 --command "shell rm /sdcard/DCIM/1.png" 雷电模拟器应用操作 假设启动名为test1的模拟器&#xff0c; 以抖音为例 &#xff1a; 判断应用是否安装&#xff1a; ldconsole adb --name test1 --co…

姿态识别+校准|视觉技术新突破

技术实现路径及优势 概述&#xff1a;通过2D图像序列加2D图像景深序列&#xff0c;利用复杂的3D重建算法与人体骨架模型的拟合还原姿态节点信息&#xff0c;进而对各种姿态进行准确的数学分析&#xff0c;达到准确高效识别姿态的效果&#xff1b;摆脱人脸3D训练样本真值依赖&am…

【输出重定向】Windows下 cmd 、powershell输出重定向

目录一、cmd和powershell二、什么是输入输出重定向三、语法及示例一、cmd和powershell 大家如果只用过Windows&#xff0c;可能cmd接触的相对多一点。按win r 输入cmd即可打开。我一般用的是powershell。 cmd:     cmd是command的缩写&#xff0c;即命令提示符。是提示命…

怎么手写转文字?借助这3款工具轻松实现

许多小伙伴在日常中会遇到需要把手写文字转换为电子版的情况&#xff0c;例如领导给一份手稿让你整理&#xff0c;亦或是平时自己随笔记录的一些内容想把它分享到平台上等等。但是手动逐字敲键盘输出太费时费神啦&#xff0c;所以今天要传授给大家一个好方法&#xff0c;那就是…

HTML5期末考核大作业,网站——青岛民俗 7页。 美丽家乡 学生旅行 游玩 主题住宿网页

&#x1f468;‍&#x1f393;静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计&#x1f469;‍&#x1f393;&#xff0c;一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…