这是我参与【第五届青训营】伴学笔记创作活动的第十五天
事务
事务:由客户定义的针对服务器对象的一组操作,它们组成了一个不可分割的单元,由服务器执行。 事务的目标:在多个事务访问对象以及服务器面临故障的情况下,保证所有由访问管理的对象始终保持一个一致的状态;
事务的故障模型:
- 对持久性存储的写操作可能发生故障。
- 服务器可能偶尔崩溃。
- 消息传递可能有任意长的延迟。消息可能丢失、重复或者损害。
- 事务能够处理进程的崩溃故障和通信的遗漏故障,但是不能处理拜占庭故障。
对服务器的请求是原子的:
1.不受其它并发客户的干扰
每个事务的效果不受其它事务的影响
2.所有操作或者完全成功,或者不留下任何效果
故障原子性--即使服务器崩溃,事务的效果也是原子的。
持久性--一旦事务完成,它的所有效果将被保存到持久存储中
并发事务中两个典型问题
-
更新丢失问题
-
不一致检索
串行等价性:如果并发事务交错执行操作的效果等同于按某种次序一次执行一个事务的效果,那么这种交错执行是一种串行等价的交错执行。
- 使用串行等价性作为并发执行的判断标准,可防止更新丢失和不一致检索问题。
两个事务串行等价的充要条件是:两个事务中所有的冲突操作都按相同的次序在它们访问的对象上执行。
串行等价可作为一个标准用于生产并发控制协议。
并发控制协议用于将访问的并发事务串行化。
事务可恢复性:
策略:推迟事务提交,直到它读取更新结果的其它事务都已提交。
连锁放弃:
- 某个事务的放弃可能导致后续更多事务的放弃
- 防止方法:只允许事务读取已提交事务写入的对象
事务的严格执行:
- 严格执行:read和write操作都推迟到写同一对象的其它事务提交或放弃后进行
临时版本
- 目的:事务放弃后,能够清除所有对象的更新
- 方法
Ø事务的所有操作更新将值存储在自己的临时版本中
Ø事务提交时,临时版本的数据才会用来更新对象