托马斯(Thomas)写入规则为协议提供了可序列化顺序的保证。 它改进了基本时间戳排序算法。
基本的托马斯写规则如下:
TS(T)< R_TS(X)
,则事务T被中止并回滚,并且操作被拒绝。TS(T)< W_TS(X)
则不执行事务的W_item(X)
操作并继续处理。W_TS(X)
设置为TS(T)
。如果使用托马斯写规则,那么可以允许一些可序列化的时间表,如同给定图中的时间表所示,不会发生序列化冲突:
图:不可冲突序列化的可序列化调度
在上图中,T1读取并在T1写入相同数据项之前。此调度不会与可序列化冲突。
托马斯编写规则检查,任何事务都不会看到T2的写入。 如果删除事务T2中的写操作,则可以获得冲突可序列化的调度,如下图所示。