关于“数据库系统概念 - 第 15 章 并发控制 - 15.5 基于有效性检查的协议”的疑问
时间: 2020-08-20来源:V2EX
前景提要
在“数据库系统概念 - 第 15 章 并发控制 - 15.5 基于有效性检查的协议”中,有这么一段话:
事务 Ti 的有效性测试要求任何满足 TS(Tk)<TS(Ti)的事务 Tk 必须满足下面两条件之一: Finish(Tk) < Start(Ti)。因为 Tk 在 Ti 开始之前完成其执行,所以可串行性次序得到了保证。 Tk 所写的数据项集与 Ti 所读数据项集不相交,并且 Tk 的写阶段在 Ti 开始其有效性检查阶段之前完成( Start(Ti) < Finish(Tk) < Validation(Ti))。这个条件保证 Tk 与 Ti 的写不重叠。因为 Tk 的写不影响 Ti 的读,又因为 Ti 不可能影响 Tk 的读,从而保证了可串行性次序。
我的疑问是:关于第 2 点,因为已经给出了“TS(Tk)<TS(Ti)”这个条件,所以一定会满足“TS(Tk)<TS(Ti)<Finish(Ti)”即“Validation(Tk)<Finish(Ti)”,也就是 Ti 的写一定是发生在 Tk 的读之后,这个条件就能够证明“Ti 不可能影响 Tk 的读”了。为什么还需要“Tk 的写阶段在 Ti 开始其有效性检查阶段之前完成( Start(Ti) < Finish(Tk) < Validation(Ti))”呢?不是“Tk 所写的数据项集与 Ti 所读数据项集不相交”就足够了吗?

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行