事务的概念:数据库事务是指作为单个逻辑工作单元执行的一系列操作(SQL语句)。这些操作要么全部执行,要么全部不执行。
- 经典的银行转账行为,A账户转给B账户10元。
- 数据库操作需要两步,第一步A账户减10元,第二步B账户加10元,
- 如果没有事务并且在两步中间发生异常,就会导致A的账户少了10元,但B的账户没有变化。
- 如果不能保证这两步操作统一,银行的转账业务也没法进行展开了。
- 所以,了解一下事务是非常有必要的啦~
原子性(Atomicity)
形成了一个逻辑单元,不能只执行其中的一部分
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的
一致性(Consistency)
在事务处理执行之前和之后,数据是一致的。
- 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
- 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
隔离性(Isolation)
一个事务处理对另一个事务处理没有影响。
- 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
- 即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
- 事务的隔离性数据库提供了多种隔离级别。
持久性(Durability)
当事务处理成功执行到结束的时候,其效果在数据库中被永久纪录下来。
- 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。