数据库知识速记:事务的四大特性(ACID)
思维导图链接:kdocs.cn/l/ceP4cpYdx…
1. 事务的原子性
原子性是指事务中的一系列操作要么全部成功,要么全部失败。也就是说,事务是不可分割的最小工作单元。如果某个操作失败,整个事务必须回滚到初始状态,确保系统不留中间状态。
实例分析
假设我们在网上购买一件商品,系统需要同时扣除支付账户金额并更新库存。如果在扣款后库存更新失败,原子性确保系统能够回滚,保证用户不会在后台看到扣款而未成功购买商品的情况。这种特性保证了用户体验的流畅性和系统的可靠性。
2. 事务的一致性
一致性确保数据库在事务开始前和结束后都处于一致的状态。无论事务成功还是失败,数据库的总状态必须保持不变。例如,如果A与B账户共有1000块,两人之间转账之后无论成功还是失败,它们的账户总和仍然是1000。
实例分析
继续上述购物例子,假设商品的库存数量在购买过程中变为负数,这显然与业务逻辑相悖。通过事务的一致性特性,系统会在处理交易时,确保库存和账户余额的变化遵循设定的商业规则。例如,如果库存不足,系统将拒绝交易,确保数据库状态的一致性。
3. 事务的隔离性
隔离性指的是多个并发事务之间不会互相干扰。每个事务都有自己的执行环境,尽管它们同时存在,最终的结果应该是事务按顺序执行的效果。隔离性与隔离级别有关,例如,某个事务只能读取已提交的修改。
实例分析
考虑在一家银行同一时间内进行两个转账操作:用户A向用户B转账100元,和用户C向用户D转账200元。如果两个事务并行执行而没有隔离,可能会导致余额错误的情况出现。通过隔离性,系统可以确保每个转账操作不会受到其他操作的影响,从而保持数据准确性,防止数据不一致。
4. 事务的持久性
持久性意味着一旦事务被提交,结果将被永久保存,即使系统出现故障也不会丢失。确保数据的持久性对任何数据库系统都至关重要。
实例分析
在完成在线支付后,用户的交易信息应当被永久存储,系统在出现任何故障(如电源断电、系统崩溃)后仍能恢复用户的交易记录。这是通过数据持久化机制如日志记录和备份实现的,确保用户的交易安全。