Thomas在DBMS中编写规则

时间戳排序协议 声明如果 (十) 而W j (十) 那么冲突的操作是R吗 (十) 是在W之前处理的 J (十) 当且仅当TS(T) ) J )。每当计划没有按照时间戳遵循可序列化顺序时,用户通常会拒绝它并回滚事务。另一方面,一些操作是无害的,是可以允许的。

null

Thomas Write规则允许此类操作,是对基本时间戳排序协议的修改。在托马斯写规则用户 忽略过时的书写 .此外,在已经讨论过的所有并发协议中, 对时间表施加并发性 那个 冲突是否可序列化 ,在Thomas Write规则中,最重要的改进是用户可以 通过视图可序列化计划实现并发性 .

首先,让我们说明什么是Thomas Write规则,然后说明它在过去几年中成功地进行了哪些修改和改进 基本协议 .

托马斯写作规则—— 托马斯写的规则不起作用 冲突 可序列化,但通过修改W_项(X)的检查操作拒绝更少的写入操作

  1. 如果 R_TS(X)>TS(T) ,然后中止并回滚,并拒绝该操作。
  2. 如果 W_TS(X)>TS(T) ,则不执行写入操作并继续处理。这是一个 过时的或过时的书写 .记住,在Thomas Write规则中,过时的写入被忽略,但遵循基本协议的事务将中止此类事务。
  3. 如果1或2中的条件均未出现,则仅执行T的W_项(X)操作,并将W_TS(X)设置为TS(T)

过时的写作范例—— Thomas Write规则中的主要更新是忽略过时的写入操作。之所以这样做,是因为时间戳大于TS(T)的某些事务(即TS排序中T之后的事务)已经写入了X的值。因此,从逻辑上来说,用户可以忽略T的写入(X)操作,该操作已过时。让我们通过一个例子来了解这一点:

假设一个用户有一个时间表,其中两个事务 1. 和T 2. 现在 TS(T 2 ) 1. ) .这意味着 1. 在T之后到达 2. 因此具有比T更大的TS值 2. 。这意味着允许计划的序列化 T 2. –>T 1. 考虑下面给出的部分时间表:

3333

图- 过时书写的例子

因此,在符合第2条的规则中,过时写入被忽略 协议这似乎更符合逻辑,因为用户跳过了重新启动整个事务的不必要过程。该协议只是对基本to协议的修改。

基本协议v/s托马斯书写规则- 假设一个用户在一个计划中有两个事务 1. 和T 2. .现在, TS(T 2. ) 1. ) 。这意味着允许计划的序列化 T 2. –>T 1 考虑这两个协议,让我们看看哪些类型的操作将被允许,不允许在它们之下。 R (A) 意味着阅读和 W (A) 意味着写操作。现在,让我们看看基本TO和Thomas Write规则中允许的部分计划类型,您将了解这两种协议在操作上的差异。用户区分两个协议中允许和不允许的操作。

基本协议

  • 不允许
    • R 1. (十) W 2. (十)
    • W 1. (十) R 2. (十)
    • W 1. (十) W 2. (十)
  • 允许
    • 所有的行动 2. 发生在T之前 1. .
    • R 1. (十) R 2 (十)

托马斯写法则

  • 不允许
    • R 1. (十) W 2. (十)
    • W 1. (十) R 2. (十)
  • 允许
    • 所有的行动 2. 发生在T之前 1 .
    • 过时的文字 :W 1. (十) W 2. (十)
    • R 1. (十) R 2. (十)

因此,从上面的列表中可以看出,与基本to协议相比,Thomas Write规则中使用的这种修改。

参考 :数据库系统概念,第五版[Silberschatz,Korth,Sudarshan],第16章

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享