Timestamp并发控制如何处理read-timestamp
How does Timestamp concurrency control handle read-timestamp
我正在学习基于时间戳的协议。我试图创建一个实例,但我不确定这是否正确。
每笔交易Ti被赋予时间戳ts(Ti)
If a transaction Ti issues read(X) operation:
If TS(Ti) < W-timestamp(X)
Operation rejected.
If TS(Ti) >= W-timestamp(X)
Read Operation executed. We set R-timestamp(x) = max(ts(T), R-timestamp(x)
All data-item Timestamps updated.
为了创建一个实际示例,我制作了这个非常简单的 excel 公式(其中 C1 是 TS(Ti),D1 是 x 的 W 时间戳:
=IF(C1<D1,"TRUE","FALSE")
所以我输入:
(C1) (C2)
TS(Ti) | W-Timestamp |
01/02/2015 | 03/02/2015 | TRUE
在第一个日期,事务(早于 stamp)正在尝试读取已被较新事务更新的值。由于 Ti<W-timestamp
是 True
,我们中止事务并使用新的时间戳重新启动。
这是否意味着 TS(Ti)
的日期现在变成了 03/02/2015
?所以如果我们再次测试:
Execute If: (03/02/2015 >= 03/02/2015) = True
然后我们需要设置R-timestamp(x) = max(ts(T), R-timestamp(x)
所以我们最终得到:
TS = 03/02/2015
W-timestamp = 03/02/2015
R-timestamp = 03/02/2015 <- is this correct, not sure what to do here.
这个实际例子是否正确? R 时间戳究竟发生了什么?
正确。
但是时间戳(以毫秒为单位)最好使用epoc时间。
对于您的示例事务,重新启动以从数据库中读取最后更新的 X。读取时间戳已更新为最后一个时间戳,表示具有此时间戳的事务读取此数据并基于它工作。如果另一个事务需要更改此值(即 X),则必须具有比 Read-Timestamp(X) 更大的时间戳。
读取时间戳将在写入规则中检查。
我正在学习基于时间戳的协议。我试图创建一个实例,但我不确定这是否正确。
每笔交易Ti被赋予时间戳ts(Ti)
If a transaction Ti issues read(X) operation:
If TS(Ti) < W-timestamp(X)
Operation rejected.
If TS(Ti) >= W-timestamp(X)
Read Operation executed. We set R-timestamp(x) = max(ts(T), R-timestamp(x)
All data-item Timestamps updated.
为了创建一个实际示例,我制作了这个非常简单的 excel 公式(其中 C1 是 TS(Ti),D1 是 x 的 W 时间戳:
=IF(C1<D1,"TRUE","FALSE")
所以我输入:
(C1) (C2)
TS(Ti) | W-Timestamp |
01/02/2015 | 03/02/2015 | TRUE
在第一个日期,事务(早于 stamp)正在尝试读取已被较新事务更新的值。由于 Ti<W-timestamp
是 True
,我们中止事务并使用新的时间戳重新启动。
这是否意味着 TS(Ti)
的日期现在变成了 03/02/2015
?所以如果我们再次测试:
Execute If: (03/02/2015 >= 03/02/2015) = True
然后我们需要设置R-timestamp(x) = max(ts(T), R-timestamp(x)
所以我们最终得到:
TS = 03/02/2015
W-timestamp = 03/02/2015
R-timestamp = 03/02/2015 <- is this correct, not sure what to do here.
这个实际例子是否正确? R 时间戳究竟发生了什么?
正确。
但是时间戳(以毫秒为单位)最好使用epoc时间。
对于您的示例事务,重新启动以从数据库中读取最后更新的 X。读取时间戳已更新为最后一个时间戳,表示具有此时间戳的事务读取此数据并基于它工作。如果另一个事务需要更改此值(即 X),则必须具有比 Read-Timestamp(X) 更大的时间戳。
读取时间戳将在写入规则中检查。