在“数据库系统概念 - 第 15 章 并发控制 - 15.5 基于有效性检查的协议”中,有这么一段话:
事务 Ti 的有效性测试要求任何满足 TS(Tk)<TS(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 所读数据项集不相交”就足够了吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.