事务的四个特性

ACID
A 代表的是原子性 就是要不一起成功 要不一起失败
C 代表的是一致性 事务的前后 数据要保存一致
I 代表的是持久性 只要提交了以后 会将数据持久化到数据库
D 代表的是隔离性 如果不考虑隔离性的话 会发生一些读取问题 会发生脏读 幻读 不可重复读 虚读
### MySQL 事务的 ACID 特性解释 #### 原子 (Atomicity) 原子意味着一个事务是一个不可分割的工作单元,即整个事务中的所有操作要么全部完成并提交,要么完全不执行任何更改。这种特性确保了即使在部分操作失败的情况下,数据库状态也不会处于中间状态或损坏的状态。 ```sql BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE account_id = 1; UPDATE accounts SET balance = balance + 100 WHERE account_id = 2; COMMIT; ``` 上述例子展示了转账过程,在此过程中两个账户的操作必须作为一个整体来处理[^3]。 #### 一致 (Consistency) 一致保证了事务将数据库从一种一致状态转换到另一种一致状态。这意味着事务不会破坏关系型数据库中已有的约束条件和其他规则。例如,外键约束、唯一约束等都将在事务前后保持有效。当一个事务完成后,它所涉及的数据应该满足所有的预定义规则和完整约束。 #### 隔离 (Isolation) 隔离指的是多个并发运行的事务之间相互独立,互不影响。为了实现这一点,MySQL提供了不同的隔离级别设置: - **Read Uncommitted**: 最低级别的隔离度,允许读取未提交的数据变更。 - **Read Committed**: 只能读取已经提交的数据修改,防止脏读现象的发生。 - **Repeatable Read**: 默认情况下使用的较高层次别的隔离级数,默认情况下能够阻止脏读和不可重复读的情况出现。 - **Serializable**: 这是最严格的隔离等级,它可以避免任何形式上的幻影读问题,但是也降低了系统的能效率。 不同隔离级别对应着不同程度上解决了诸如脏读、不可重复读以及幻读等问题[^5]。 #### 持久 (Durability) 持久表示一旦事务被确认为成功,则该事务对数据库所做的所有更新都将永久保存下来,即便是在系统崩溃或其他异常情况之后也能恢复过来。这通常依赖于日志记录机制以及其他冗余措施来保障数据的安全和稳定。 综上所述,MySQL 的 ACID 属共同作用以提供可靠且高效的交易管理功能,从而使得应用程序能够在复杂多变的应用场景下稳定运作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值