• 【MySQL】事务的概念、特性及其分类


    如果我错了也承担,认定这就是答案,就算有人嘲笑我极端 —— 2022/11/14

    一. 事务是什么?

    1. 概述

    事务就是可简单可复杂 SQL 语句,其是访问并更新数据库中各种数据项的一个程序执行单元,目的是保证在事务中的操作要么都做修改,要么都不做修改

    事务具有严格的定义,必须同时满足四个特性,也就是我们常说的 ACID 标准(数据库厂商出于各种目的,并不一定严格的满足事务的ACID标准,这可能不会带来严重的后果,反而会带来性能的提升,但是 MySQL 的 InnoDB 存储引擎完全遵循和满足事务的 AICD 特性),关于事务 ACID 的具体介绍如下:

    • A (Atomicity | 原子性): 原子性是指整个数据库事务是不可分割的工作单位,只有所有数据库操作都执行成功,才算整个事务成功。事务中任何一个语句执行失败,已经执行成功的语句也必须撤销,数据库退回为执行事务前的状态。
    • C (consistency | 一致性): 一致性是指事务将数据库由一种状态转变为下一种一致的状态。事务开始前和事务结束后,数据库的完整性约束没被破坏。—— 比如:表中有一个字段为姓名,其是唯一约束(要求其在表中不能重复),如果一个事务对姓名字段进行了修改,但在事务提交时,表中的姓名字段变得非唯一了,这就破坏了事务的一致性要求。
    • I (isolation | 隔离性):隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离,该事务提交前对其他事务都不可见。隔离性又被称为并发控制、可串行化、锁等。
    • D (durability | 持久性):持久性指事务一旦提交其结果就算永久的,即使发生宕机等故障,数据库也能将数据恢复。这里要注意,持久性只能保证数据库本身发生故障时数据的恢复,对外部原因造成的故障其不能保证数据的恢复,其保证的是事务系统的高可靠性,而不是高可用性。
    2. 分类

    (1)扁平事务

    事务类型中最简单的一种,在扁平事务中,所有操作都处于同一层次,要么都执行,要么都回滚,其主要限制是不能提交或者回滚事务的一部分

    (2)带有保存点的扁平事务

    带有保存点的扁平事务除了支持扁平事务支持操作外,允许事务在执行过程中回滚到同一事务中较早的一个状态

    (3)链事务

    链事务可视为保存点模式的一种变种。带有保存点的扁平事务,当系统发生奔溃时,所有的保存点都会丢失。链事务链事务的回滚只限于当前事务,即其只能恢复到最近的一个保存点。

    链事务的思想是:在提交一个事务时,释放不需要的数据对象,将必要的处理上下文隐式地传给下一个要开始的事务。注意,提交事务操作和开始下一个事务操作将合并为一个原子操作。这意味着下一个事务将看到上一个事务的结果,就好像在一个事务中进行的一样。

    在这里插入图片描述

    (4)嵌套事务

    嵌套事务是层次架构框架,由顶层事务控制各个层次的事务。

    在这里插入图片描述

    (5)分布式事务

    分布式事务指在分布式环境下允许的扁平事务,因此需要根据数据所在位置访问网络中的不同节点。

    MySQL 的 InnoDB 存储引擎除了不支持嵌套事务(可用带保存点的扁平事务模拟串行的嵌套事务),其他四种事务都支持。

  • 相关阅读:
    数据可视化(七):Pandas香港酒店数据高级分析,涉及相关系数,协方差,数据离散化,透视表等精美可视化展示
    【蓝桥杯物联网赛项学习日志】Day2 中断矩阵按键
    基于机器学习LightGBM进行海洋轨迹预测 代码+数据
    多线程系列(二) -Thread类使用详解
    shiro-第二篇-整合springboot
    【共享单车数据专题】共享单车数据分析的技术要点
    Ubuntu20.04 PostgreSQL 14 安装配置记录
    基于Redis的分布式锁安全吗?(下)
    Github每日精选(第73期):Go 的 JSON 解析器gjson
    302. 包含全部黑色像素的最小矩形 BFS
  • 原文地址:https://blog.csdn.net/liuwanqing233333/article/details/127842912