我的问题是,两相锁定(而不是“严格的两相锁定”)机制如何知道它何时开始收缩阶段?除非DB知道事务中的所有查询(这违背了两阶段锁定机制的全部要点,这种机制应该能够在不知道事务中的所有查询的情况下确保可序列化),否则无法判断事务是否需要获得更多的锁。假设我有如下事务:select * from test_tab where id=1;update
时间锁功能将充当看门人,因此解密将不会继续进行,数据将不会显示,直到将来特定的(灵活的) DateTimeOffset?用户将需要等待,直到将来的某个日期,然后程序将通过签署微事务自动解密(通过DateTimeOffset自动解密与区块链上的事务解锁)自动解密。要求:
理想情况下,时间锁DateTimeOffset/事务解锁应该来自外部来源(比特币区块链)。 TimeLock特性不应该是一个简单的if/else子句,如果进行反编译,很容易就会失效。参见Peter To
说SELECT FOR UPDATE设置一个IX锁。IX锁是意图排他锁,当发出时它意味着“事务T打算在扫描行上设置X(排它)锁”。MySQL术语表表示,关于意图排他性锁:
一种适用于表级别的锁,用于指示事务打算在表中的行上获取什么样的锁。不同的事务可以在同一表上获取不同类型的意图锁,,但是获取表上的意图排他(IX)锁的第一个事务阻止其他事务</