ACID事务

ACID事务:

原子性(Atomicity):事务要么全部执行,要么全部不执行。

一致性(Consistency):需要遵守所有的约束以及其他的数据完整性规则,并且完全地更新所有的相关的对象(数据页和索引页)

隔离性(Isolation):每一个事务都与任何其他事务完全隔离。一个事务的动作不会受到另一个事务动作的干扰。

持久性(Durability):完成事务后,它的作用结果将永远的存在于系统内。数据是“安全的”这是指在诸多如停电或其他非磁盘系统故障的情况下也不会导致发生数据只写入一般的情况。


### 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、付费专栏及课程。

余额充值