问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

事务ACID四大特性(图文详解~)

创作时间:
作者:
@小白创作中心

事务ACID四大特性(图文详解~)

引用
CSDN
1.
https://m.blog.csdn.net/weixin_48935611/article/details/140414362

事务ACID特性是数据库管理系统中保证事务正确执行的四大特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。本文将对这四大特性进行详细解释,并重点介绍事务隔离级别的不同级别及其应用场景。

ACID

ACID 是数据库管理系统中保证事务正确执行的四大特性的缩写。

1.Atomicity(原子性)

  • 原子性指事务是不可分割的单位,要么全部执行成功,要么全部失败回滚。—
    All or nothing.
  • 通常使用日志记录机制来启动回滚功能。
  • 在事务执行过程中,如果发生错误,系统会撤销事务已经执行的操作,使数据回滚到事务开始前的状态,保证数据的一致性。

2.Consistency(一致性)

  • 一致性指事务将系统从一个一致性状态转换到另一个一致性状态。
  • 在事务开始前和事务结束后,数据库的完整性约束没有被破坏,数据的约束依然有效。
  • 事务执行的过程中,数据库始终保持一致性状态。
  • 例如,账户余额不可以是负数,一致性可以防止无效数据弄乱数据库。

3.Isolation(隔离性)

  • 隔离性指数据库允许多个并发事务同时对其数据进行读写,并且事务之间是相互隔离的,一个事务的执行不应影响其他事务的执行。

    数据库系统中的隔离级别是指多个事务并发执行时,一个事务对数据的读写操作受到其他事务影响程度的程度。
    隔离级别越高,事务之间的相互影响越小,但也可能会导致系统性能下降。

1. 读未提交(Read Uncommitted)

  • 定义:最低的隔离级别。一个事务可以读取另一个事务未提交的数据修改。
  • 问题:可能会导致脏读(
    Dirty Read
    ),即一个事务读取到了另一个未提交事务的数据,但该事务最终可能会回滚,导致读取到的数据是无效的。

2. 读已提交(Read Committed)

  • 定义:一个事务只能读取到另一个事务已经提交的数据。
  • 解决的问题:避免了脏读,但仍可能导致不可重复读和幻读问题。
  • 不可重复读示例:一个事务内的两次读取操作返回的结果不一致,通常是由于其他事务修改了数据造成的
    同一个事务中多次读取同样的数据时,其值保持发生了改变。即两次读取期间,其他事务对数据进行了修改,该事务在同一事务内的多次读取结果不一致。
  • 幻读示例:
    一个事务内两次查询返回的记录数不一致,通常是由于其他事务插入了新数据或删除了数据造成的。

3. 可重复读(Repeatable Read)

  • 定义:确保在同一个事务中多次读取同样的数据时,其值保持不变。即使其他事务对数据进行了修改,该事务在同一事务内的多次读取结果也不会改变。
  • 解决的问题:避免了不可重复读,但仍可能出现幻读问题。

4. 序列化(Serializable)

  • 定义:最高的隔离级别,通过强制事务串行执行来避免并发问题。保证了所有并发事务的执行效果与串行执行的效果相同,从而避免了脏读、不可重复读和幻读的问题。
  • 解决的问题:提供最高的数据一致性和完整性,但可能会导致性能下降,因为事务必须严格按照顺序执行。

选择隔离级别的考虑因素:

  • 数据一致性要求:如果应用对数据一致性要求极高,应选择较高的隔离级别,如可重复读或串行化。
  • 并发性能需求:如果并发性能是关键,可以选择较低的隔离级别,如读已提交或读未提交,但需要考虑并发带来的数据一致性问题。

4.Durability(持久性)

  • 持久性指一旦事务提交,其所做的修改会永久保存在数据库中,并不会因系统故障导致数据的丢失。
  • 通常通过将事务的操作持久化到非易失性存储介质(如硬盘)来实现,保证即使系统崩溃,事务提交的数据也不会丢失。
  • 分布式节点持久化:

    一言以蔽之:原子性——回滚失败事务,一致性——遵循规则,隔离性——防止干扰,持久性——数据永久保存。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号