什么是事务的ACID

1)原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;

2)一致性(Consistent):事务结束后系统状态是一致的;

3)隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;

4)持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。

 

 

  • 幻读(Phantom Read):事务A重新执行一个查询,返回一系列符合查询条件的行,发现其中插入了被事务B提交的行。
  • 不可重复读(Unrepeatable Read):事务A重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务B修改过了。
  • 脏读(Dirty Read):A事务读取B事务尚未提交的数据并在此基础上操作,而B事务执行回滚,那么A读取到的数据就是脏数据。

 

 

不可重复读(Unrepeatable Read):事务A重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务B修改过了。

### ACID事务的概念及其在数据库中的作用 #### 1. 原子性 (Atomicity) 原子性表示事务是一个不可分割的工作单元,其中的操作要么全部执行成功,要么完全不执行。这意味着如果事务的一部分失败,则整个事务都会被撤销并恢复到初始状态[^3]。 ```sql BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- 减少账户余额 INSERT INTO transactions VALUES ('withdrawal', 1, 100); -- 记录交易 COMMIT; ``` 上述代码展示了如何通过 `BEGIN TRANSACTION` 和 `COMMIT` 来定义一个完整的事务。如果在这两个语句之间发生了错误(例如插入记录失败),则所有的更改都将被回滚至原始状态[^2]。 #### 2. 一致性 (Consistency) 一致性确保事务不会破坏数据库的完整性约束条件。无论何时启动或结束事务处理过程,都必须维持从一种一致状态转变成另一种一致状态的原则。这包括遵循外键关系、唯一索引以及其他预设规则等。 例如,在银行转账场景下,资金转移前后总金额应该保持不变: ```sql -- 转账前验证双方账户是否存在以及是否有足够余额 IF EXISTS(SELECT * FROM users WHERE user_id=sender AND balance >= amount) THEN BEGIN TRANSACTION; UPDATE users SET balance = balance - :amount WHERE user_id=:sender; UPDATE users SET balance = balance + :amount WHERE user_id=:receiver; COMMIT; ELSE ROLLBACK; END IF; ``` 这里假设存在足够的逻辑来防止并发更新冲突等问题[^4]。 #### 3. 隔离性 (Isolation) 隔离级别决定了多个同时运行的事务之间的相互影响程度。不同的DBMS提供了多种级别的锁机制或其他技术手段以实现不同程度上的独立运作效果。常见的四种标准SQL隔离等级如下表所示: | **隔离级** | **脏读可能性** | **不可重复读可能性** | **幻象读可能性** | |--------------------|---------------|---------------------|----------------| | READ UNCOMMITTED | 是 | 是 | 是 | | READ COMMITTED | 否 | 是 | 是 | | REPEATABLE READ | 否 | 否 | 是 | | SERIALIZABLE | 否 | 否 | 否 | 选择合适的隔离水平对于平衡性能与数据准确性至关重要[^5]。 #### 4. 持久性 (Durability) 一旦事务提交完成之后,即使系统崩溃或者断电等情况发生,其结果也应当能够保存下来而不丢失。通常情况下,这是借助于写入磁盘的日志文件或者其他形式的非易失性存储介质达成的目标^。 当每次成功执行完一条命令后,相关信息会被追加进专门设立用于追踪这些变动情况的日志当中;如此一来,万一将来真的遇到了意外状况而不得不重新构建当前版本的话,就可以依靠这份详尽的历史记录来进行精确还原了。 --- ### 总结 综上所述,ACID属性共同保障了数据库系统的可靠性、稳定性和安全性。它们各自发挥着不可或缺的作用:原子性维护整体操作的成功与否;一致性保护内部结构免受损害;隔离性减少外部干扰带来的不确定性;最后由持久性负责长期保留最终成果[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值