首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Conflict Serializable和Serializable有什么区别?

Conflict Serializable和Serializable有什么区别?
EN

Stack Overflow用户
提问于 2013-12-12 04:58:51
回答 6查看 16K关注 0票数 7

我的理解是冲突可序列化意味着可序列化。我不确定这有什么不同。可序列化是否意味着冲突可序列化?

EN

回答 6

Stack Overflow用户

发布于 2017-05-30 00:00:48

冲突可序列化是可序列化的子集,所以仅仅因为调度是冲突可序列化就意味着它是可序列化的。

请参阅cow书籍数据库管理系统第2版,第19.1.1章,P541

每个冲突的可序列化调度都是可序列化的。

可序列化但不冲突的可序列化调度是

代码语言:javascript
复制
T1 : R(A)       W(A) C
T2 :     W(A) C
T3 :                   W(A) C

这不是冲突可序列化的(按优先级图),但等同于可序列化的调度

代码语言:javascript
复制
T1 T2 T3

因为T3盲写入两个调度中的输出。

票数 5
EN

Stack Overflow用户

发布于 2013-12-26 13:33:28

serializability.的子集是Conflict serializability如果调度是冲突可序列化的,则暗示此调度是可序列化的。

与仅仅是可序列化的相比,在计算上更容易确定某些东西是否是冲突可序列化的。只需构造一个precedence graph。如果图是非循环的,则此调度是冲突的-等价于图的路径所描述的某些串行调度。

想象一下事务A、B和C都写到同一页上。A写入,然后是B,然后是C,然后是A。没有冲突等价的可序列化调度。A必须先走,因为B和C在A之后有冲突。但是A也必须在最后走,因为B和C在A之前有冲突。因此图中的循环。

但是,仅仅因为它不是冲突可序列化的并不意味着它是不可序列化的。例如,如果A的最后一次写入与C的写入完全相同,那么ABC将是一个与原始调度等价的串行调度,因为最后一次写入无关紧要。

票数 4
EN

Stack Overflow用户

发布于 2014-01-13 17:10:15

冲突可序列化是视图可序列化的子集。“调度可以是冲突可序列化的,但不是视图可序列化的(就像在盲写的情况下一样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20529800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档