1. 事务介绍
事务(Transaction), 一般是指要做的或所做的事情. 在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).
例如: 去银行取500元钱, 大概有两个步骤:第一步输入密码金额, 银行卡扣掉500元;第二部从ATM出500元钱. 这两个步骤必须是要么都执行要么都不执行. 如果银行卡扣除了500元但ATM出钱失败, 用户将会损失500元; 如果银行卡扣钱失败但ATM却出了500元, 那么银行将损失500元.
事务是一系列的动作, 他们综合在一起才是一个完整的工作单元, 这些动作必须全部完成, 如果有一个失败的话, 那么事务就会回滚到最开始的状态. 仿佛什么都没发生过一样.
在企业级应用程序开发中, 事务管理是必不可少的技术, 用来确保数据的完整性和一致性.
2. 事务的四个特性(ACID)
(1) 原子性(Atomicity) : 事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成, 要么完全不起作用.
(2) 一致性(Consistency) :一旦事务完成(不管成功还是失败), 系统必须确保它所创建的业务处于一致的状态, 而不是部分完成部分失败. 在现实中的数据不应该被破坏.
(3) 隔离性(Isolation) : 可能有许多事务会同时处理相同的数据, 因此每个事务都应该与其他事务隔离开来, 防止数据损坏.
(4) 持久性(Durability) : 一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响, 这样就能从任何系统崩溃中恢复过来. 通常情况下, 事务的结果被写到持久化存储器中.