Marklogic MVCC:同期与非阻挡

Yas*_*ash 2 transactions mvcc marklogic

我试图通过一个例子来理解同期和非阻塞参数.如果我是对的,请告诉我.

假设我们在时间戳= 10处发生事务T1,T2,T3.T1
,T2,T3分别在30,40,50处提交.如果查询事务发生在35:

for contemporaneous:查询读取T1提交的版本,并保持T2和T3等待读取完成.

对于非阻塞:只有在所有3个事务T1,T2,T3都提交到50后才能读取查询.

hun*_*ker 6

如果您考虑查询灾难恢复副本群集,这是最容易理解和最重要的.在DR设置中,主服务器上的每个林都将其日志框架复制到副本上的匹配林.数据库中通常有多个林,并且由于复制位于林级别,因此某些林可能比其他林稍晚一些.

现在想象一个(只读)查询进入副本上的数据库.你有两个选择.一,您可以在最后一个时间戳运行查询,其中包含所有数据(非阻塞).第二,您可以在最后一个时间戳运行查询(在最远的森林中),并等待所有数据到达(对于其他林),这样您就可以获得事后一致的视图(那是同时代的).

请注意,这两个选项在事务上是一致的.它只是关于数据库如何选择您希望查询运行的时间戳.

只读查询始终无锁.