当前位置: 首页 > news >正文

事务详细介绍

一、简介

1、什么是事务

事务是指一组操作,这些操作要么全部成功执行,要么全部不执行,保证数据的完整性和一致性。事务广泛应用于数据库管理系统、分布式系统和企业级应用中;

2、事务的特性

事务具有四个基本特性,通常被称为ACID特性:

  1. 原子性(Atomicity) - 事务中的所有操作要么全部完成,要么全部失败回滚,不存在部分完成的情况;
  2. 一致性 (Consistency) - 事务必须使数据库从一个一致性状态转换到另一个一致性状态;
  3. 隔离性(Isolation) - 多个事务并发执行时,一个事务不应该被其他事务干扰;
  4. 持久性 (Durability) - 一旦事务提交,其所做的修改将永久保存在数据库中;

3、事务的传播性

事务的传播一般发生在事务的嵌套中,常见的事务传播属性包括:

  • REQUIRED: 如果当前存在事务,则加入该事务;如果没有,则创建一个新的。
  • REQUIRES_NEW: 总是创建一个新的事务,如果当前存在事务,则将其挂起。
  • SUPPORTS: 如果当前存在事务,则加入该事务;如果没有,则以非事务方式执行。
  • MANDATORY: 必须在一个事务中执行,如果没有,则抛出异常。
  • NOT_SUPPORTED: 总是以非事务方式执行,如果当前存在事务,则将其挂起。
  • NEVER: 以非事务方式执行,如果当前存在事务,则抛出异常。
  • NESTED: 如果当前存在事务,则开启一个嵌套事务。

那么有聪明的小伙伴就要问了:REQUIRED中,如果没有事务,则新建一个,这里的外层事务,还算是事务吗?

答:在事务传播属性 REQUIRED 的上下文中,“外层事务” 通常指的是当前方法执行时已经存在的事务环境。如果没有事务存在,使用 REQUIRED 的方法会启动一个新的事务,此时这个新启动的事务自然成为外层事务。

举个简单的例子:

假设有两个方法,methodA 和 methodB,两个方法都配置为使用 REQUIRED。
1. 当 methodA 被调用时,如果没有其他事务在进行中,methodA 会启动一个新的事务。这时,这个事务就是外层事务。
2. 如果 methodA 在执行过程中调用了 methodB,由于 REQUIRED 的传播属性,methodB 不会创建新的事务,而是加入 methodA 已经启动的事务。

因此,在 REQUIRED 场景中,当没有现有事务时,创建的新事务确实是一个标准的事务(即 “外层事务”),它管理在其控制范围内的所有数据库操作,直到提交或回滚。

http://www.xdnf.cn/news/121735.html

相关文章:

  • SVN钩子脚本获取日志中文乱码解决办法
  • Pikachu靶场
  • GIT 使用小记
  • Electron Forge【实战】百度智能云千帆大模型 —— AI聊天
  • nuxt3持久化存储全局变量
  • 【深度学习核心技术解析】从理论到实践的全链路指南
  • 【Python解释器】Pycharm中找不到Python打包工具-解决办法
  • 优化Nginx的下载功能
  • EFISH-SBC-RK3588无人机地面基准站项目
  • Spring 中@Autowired,@Resource,@Inject 注解实现原理
  • 中间系统-SPF计算
  • 如何规避矩阵运营中的限流风险及解决方案
  • 如何测试短信接口
  • Java String对象创建过程
  • 如何借助ETL数据集成工具实现数据一致性?
  • 腾讯云服务器安全——服务防火墙端口放行
  • 【棒球运动】户外运动安全技巧·棒球1号位
  • 多头注意力
  • Redis-缓存应用 本地缓存与分布式缓存的深度解析
  • React 的 useEffect 清理函数详解
  • MCP servers源码详细解析
  • 把dll模块注入到游戏进程的方法_挂起进程注入
  • AOSP CachedAppOptimizer 冻结方案
  • 项目——高并发内存池
  • (八)深入了解AVFoundation-采集:拍照功能的实现
  • Java学习手册:TCP 协议基础
  • Python函数与模块笔记
  • arm64适配系列文章-第十章-arm64环境上jenkins的部署
  • 热度大幅度下降,25西电经济与管理学院(考研录取情况)
  • git检查提交分支和package.json的version版本是否一致