考虑两个线程A和B
它们同时提交: A.lock -> A.validation -> B.lock -> B.validation -> (A、B安装更新)
这不是可串行化的,因为B可以在A提交之前覆盖A的读取吗?
发布于 2014-12-25 11:24:30
它是可序列化的,因为写入事务A的写集的值依赖于A的readset的缓存的值,这是在验证过程中确认的。B对A的读集的覆盖不会影响A的读集的缓存值,而A的写入是基于该值的。写入事务A的写集的值与事务A在事务B启动之前运行完成时所写的值完全相同,因此它是可序列化的。
示例
我们有一个事务内存,由3个变量X,Y,Z= X1,Y1,Z1组成
事务A读取X并用依赖于X (X + P)的值写入Y,事务B读取Z并用依赖于Z (Z + Q)的值写入X。
序列化执行
交错执行
https://stackoverflow.com/questions/27453984
复制相似问题