【MySQL】事务 —— 四大特性ACID

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。

    例如上面的转账案例,一方钱减少了,另一方钱肯定要增加。

  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

    指:有若干个并发事务,例如事务A和事务B,它们都在同时操作这个数据库,A事务在操作的时候它不会去影响并发的B事务的执行,B事务在操作的时候也不会去影响并发的A事务的执行,它们两个事务是在独立的环境下运行的。

  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

如下图,我们每创建出来的数据库,都对应一个文件夹

image-20240717165321606

我们现在操作的数据库叫 itheimaitheima 中有一个表叫 account.ibd,我们事务一旦提交后,最终数据就会持久化在磁盘中,就会永久的保留下来,这个就称之为持久性。

image-20240717165449747


上述就是事务的四大特性,简称ACID。

image-20240717160437180
### MySQL 中的事务概念 在 MySQL 数据库环境中,事务代表一组 SQL 操作命令,这些命令作为一个整体被执行。这组操作要么完全执行成功,要么全部不执行,从而保持数据库的一致性和完整性[^1]。 #### ACID 属性详解 为了确保事务能够可靠地处理数据,MySQL 支持 ACID 四大属性: #### 原子性 (Atomicity) 原子性意味着一个事务是一个不可分割的工作单元。如果事务的一部分失败,则整个事务都将被撤销;只有当所有部分都成功时,才会真正提交事务的结果。这种机制防止了部分更新导致的数据不一致问题[^4]。 ```sql START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; UPDATE accounts SET balance = balance + 100 WHERE user_id = 2; COMMIT; ``` 这段代码展示了如何在一个转账过程中使用事务来保证两个账户之间的资金转移是完整的——要么双方余额都被正确调整,要么没有任何变化发生。 #### 一致性 (Consistency) 一致性指的是事务应始终使数据库从一种有效状态转变为另一种有效状态。任何违反约束条件的操作都会导致该事务被拒绝,以此维护系统的逻辑正确性。 例如,在上述例子中,如果没有足够的金额可以转出,那么这个尝试将会触发错误,并且回滚整个交易过程以保护账本不受损害。 #### 隔离性 (Isolation) 隔离级别决定了不同用户的并发事务之间相互影响的程度。理想情况下,每个正在运行中的事务看起来就像是唯一正在进行的操作一样,尽管实际上可能有多个事务同时存在。MySQL 提供了几种不同的隔离等级设置选项,允许管理员根据具体需求平衡性能与安全性[^3]。 #### 持久性 (Durability) 一旦某个事务完成了它的 commit 步骤,它所做的修改就会永久保存下来,即便之后发生了硬件故障或其他意外情况也不例外。这是因为 MySQL 在每次提交之前都会把必要的变更记录先写入硬盘上的日志文件里去[^2]。 综上所述,通过支持 ACID 特征,MySQL 能够提供强大而可靠的事务管理功能,这对于构建稳定的企业级应用程序至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值