Database 时间戳如何导致;全局死锁“;?

Database 时间戳如何导致;全局死锁“;?,database,concurrency,timestamp,distributed-computing,Database,Concurrency,Timestamp,Distributed Computing,我正在阅读一些关于在分布式数据库中使用时间戳进行并发控制的优缺点的资料。我正在阅读的材料提到,虽然时间戳克服了可能影响锁定的传统死锁问题,但仍然存在“全局死锁”的问题,它很容易受到影响 该材料将全局死锁描述为局部图的等待图中不存在循环,但全局图中存在循环的情况 我想知道这怎么会发生?有人能描述一下时间戳系统可能导致此问题的情况吗?这里是一个例子,可能是最简单的例子。我们有机器A和B。机器A具有具有关系为T1T4 现在,局部图是T2必须等待T1,T3必须等待T4。因此没有局部循环。但是现在,假设我

我正在阅读一些关于在分布式数据库中使用时间戳进行并发控制的优缺点的资料。我正在阅读的材料提到,虽然时间戳克服了可能影响锁定的传统死锁问题,但仍然存在“全局死锁”的问题,它很容易受到影响

该材料将全局死锁描述为局部图的等待图中不存在循环,但全局图中存在循环的情况


我想知道这怎么会发生?有人能描述一下时间戳系统可能导致此问题的情况吗?

这里是一个例子,可能是最简单的例子。我们有机器
A
B
。机器A具有具有关系为
T1
的锁
T1
T2
。机器
B
具有
T3
T4
以及
T3>T4

现在,局部图是T2必须等待T1,T3必须等待T4。因此没有局部循环。但是现在,假设我们有
T4
,那么T1必须等待T4。同时
T2
因此T3必须等待T2。在这种情况下,全球存在一个循环


那么这种循环是如何发生的呢?这里的关键是,在分布式系统中,您永远不会拥有完整的信息。因此,我们以后可能会了解到,机器之间的依赖关系存在。然后我们遇到了一个问题。

时间戳用于确定机器上本地进程之间的冲突解决方案。它提供了一种解决该级别死锁的方法。对于分布式进程,不同机器上的两个进程可能互相等待。这实际上是一个常规的死锁,但是在机器之间。这称为“全局”死锁。Imho时间戳也可以在那里使用,但显然是不切实际的

有关这方面的一些信息,请访问