首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在某些情况下,遵循thomas写规则的时间戳协议允许非视图可序列化的时间表吗?

在某些情况下,遵循thomas写规则的时间戳协议允许非视图可序列化的时间表吗?
EN

Database Administration用户
提问于 2019-11-07 14:59:13
回答 2查看 430关注 0票数 7

我在一本教科书( Avi Silberschatz、Henry F. Korth和S. Sudarshan $6e$)第686页(数据库系统概念教科书)中遇到了以下几行:

Thomas的写规则允许计划不是冲突的可序列化的,但仍然是正确的。那些非冲突的可序列化计划满足视图可序列化计划的定义(参见示例框)。

我从上面的行中了解到,按照Thomas的写规则由时间戳协议生成的每个调度都是可序列化的视图。

现在让我们来看下面的小计划:$S: R_1(X),W_2(X),W_1(X)$。

这个调度$S$是允许在时间戳协议下,它遵循托马斯的写规则。

序列化顺序为$R_1(X),W_1(X).$

但我无法证明它是可序列化的视图。

实际上我认为它是非视图可序列化的,因为,

  1. 以串行顺序为$T_1,T_2$现在$X$的最后值是由$T_2$编写的。所以不是等价物。
  2. 下一个可选的串行顺序是$T_2,T_1$这里,$R_1(X)$将读取由$T_1$编写的$X$值,而不是在两个事务开始之前存在的原始值。因此,这也不等同于视图。

这里出什么问题了?请帮我拿这个。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2019-11-21 05:07:44

S的时间表如下:

代码语言:javascript
复制
T1    T2
----  -----
R(X)
      W(X)
W(X)

要想查看可序列化,W2(X)必须在R1(X)之前或W1(X)之后移动。然而,第一个会违反“初始读取”规则,而第二个会违反“最后写入”规则。

T2在T1之后启动,因此具有更高的时间戳。当T1写X的时候,它看到了T2's的时间戳。根据托马斯的写规则,T1的写是无效的,可以删除。然后,给定的时间表变成

代码语言:javascript
复制
T1    T2
----  -----
R(X)
      W(X)

现在所有的T2's动作都是在T1's之后发生的--时间表是连续的。

(您的问题中有相反的情况,删除W2(X)。我认为这是个错误。)

要显示计划是可串行化的,只需显示至少有一个等效的时间表是串行的。没有必要证明每一个可能的串行时间表都是可以实现的。我同意,由于读写依赖关系,T2、T1不能按原计划查看可串行化。但是,T1、T2在Thomas规则下是可序列化的。

票数 5
EN

Database Administration用户

发布于 2020-08-21 15:32:16

我不太清楚地问托马斯写规则是否“允许”查看可序列化的时间表。正确的问题应该是,“由thomas规则生成的计划”是否是可序列化的?“。这个规则说忽略T1's过时的写(X)在进度表S:R1(X),W2(X),W1(X)。它可以被忽略,因为没有其他事务会读取它,并且它不会以任何方式影响时间表。给出的调度S是不可串行化的(既不是视图也不是冲突),但是由thomas规则生成的结果调度S':R1(X),W2(X)是按T1->T2顺序可序列化的视图(在所有情况下都不能保证冲突可串行化)。

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

https://dba.stackexchange.com/questions/252771

复制
相关文章

相似问题

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