第五章 事务管理 v1.0
第一部分 事务的概念
一、ACID理论
1.原子性(Atomicity)
事务的所有操作在数据库中要么都做要么都不做。
2.一致性(Consistency)
一个事务独立执行的结果,将保持数据的一致性,即数据不会因为事务的执行而遭受破坏。
3.隔离性(Isolation)
一个事务的执行不能被其他事务干扰。并发事务在执行过程中可能会对同一数据进行操作,这些事务的操作不会相互干扰,而是相互隔离的。
4.持久性(Durability)
一个事务一旦提交,它对数据库的改变必须是永久的,即使系统出现故障也是如此。
二、CAP理论
对于一个分布式系统,一致性(Consistency) 、可用性和分区容忍性三个特点最多只能三选二。
一致性(Consistency):是指系统在执行了某些操作后仍处于一个一致的状态。
可用性(Availablity):是指对数据的所有操作都有成功的返回,即任何请求不管成功或失败都有响应。
分区容忍性(Partition tolerance):这一概念的前提是在网络发生故障的时候。在网络连接上,一些结点出现故障,使得原本连通的网络变成了一块块的分区,若允许系统继续工作,那就是分区可容忍的。
三、BASE理论
由于CAP理论的存在,为提高性能,出现了ACID的变种BASE,它是一个弱一致性的理论,只要求最终一致性。
BA(Basically Available):基本可用
S(Soft state):软状态,可以理解为“无连接的”的,而与之相对应的是“面向连接”的。
E (Eventual consistency):最终一致性,最终整个系统看到的数据是一致的。
第二部分 数据库的并发控制
一、事务调度
1.串行调度
多个事务依次串行执行,且只有当一个事务的所有操作都执行完成才执行另一个事务的所有操作
2.并发调度
利用分时的方法同时处理多个事务,若结果与串行调度结果相同,称为正确调度(可串行调度)
3.可恢复调度
事务A要读另一事务B写的数据时,另一事务B必须先于事务A提交
二、并发操作的问题
1.丢失修改
两个事务对同一数据进行修改,导致事务A对数据库的修改被B的修改覆盖
2.不可重复读
事务对同一数据的两次读取结果不同,原因是两次读取间隙数据被另一事务修改
3.读脏数据
某事物读取的数据时其他事物修改后的值,但是修改之后又被撤销
4.幻读
事务对同一数据的两次读取结果条数不同
三、锁
1.排它锁(X锁,写锁|独占锁)
只允许自己读写,其他事务都不能加任何锁,不能读取和修改该数据
2.共享锁(S锁,读锁)
允许自己读,其他事务可以加S锁,但只要有S锁,任何事务都不能对该数据加X锁
四、封锁协议