问答题490/1053说一下什么是事务的ACID属性吧

难度:
2021-11-02 创建

参考答案:

事务的ACID属性是数据库事务管理的四个基本特性,用来保证事务在执行过程中的可靠性和一致性。ACID代表四个关键属性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)。这些属性确保了数据库在处理并发事务时不会发生数据损坏或不一致的情况。

1. 原子性(Atomicity)

  • 定义:原子性保证事务中的所有操作要么全部执行,要么全部不执行。如果事务中的某个操作失败,整个事务会被撤销,数据库会恢复到事务开始前的状态。
  • 举例:例如,转账操作中的两个步骤:从账户A扣款并将款项存入账户B。如果在执行到扣款时系统崩溃,原子性确保在系统恢复后,两个操作(扣款和存款)都不会部分完成,账户B不会收到账户A未扣除的款项。

2. 一致性(Consistency)

  • 定义:一致性确保事务在执行前后,数据库的状态都是一致的。也就是说,事务在执行之前和之后,数据库都应该满足预定义的约束、规则和数据完整性条件。事务的执行不会破坏数据库的完整性。
  • 举例:假设数据库包含一个约束,要求账户余额不能为负数。无论执行什么操作,只要事务开始时满足该规则,事务结束后也应保持这一规则(例如,转账操作后账户余额不应出现负数)。

3. 隔离性(Isolation)

  • 定义:隔离性指事务的执行不会受到其他事务的干扰。即使多个事务并发执行,它们的中间状态对其他事务不可见。事务的隔离性通常通过事务隔离级别来控制,不同的隔离级别会对事务之间的交互有不同的控制。
  • 举例:假设事务A正在修改账户A的余额,而事务B也在尝试修改同一账户的余额。在隔离性保证下,事务B的操作不会影响事务A的操作,直到事务A提交或回滚,确保数据一致性。

4. 持久性(Durability)

  • 定义:持久性保证事务一旦提交,其对数据库的修改是永久性的,即使系统发生崩溃或重启,已提交的事务所做的修改依然会保留。持久性依赖于数据库的日志机制(如redo日志binlog)和持久存储设备。
  • 举例:转账操作一旦提交,即使数据库发生崩溃,账户余额的变更也不会丢失。当数据库恢复时,系统会根据日志确保余额变更的持久保存。

最近更新时间:2024-12-09