我正在阅读在分布式数据库中使用时间戳进行并发控制的优点/缺点。我正在阅读的材料提到,尽管时间戳克服了可能影响锁定的传统死锁问题,但仍然存在易受“全局死锁”问题。
该材料将全局死锁描述为局部图的等待图中不存在循环但全局图中存在循环的情况。
我想知道这会怎么样?有人可以描述时间戳系统可能导致此问题的情况吗?
答案 0 :(得分:5)
这是一个例子,可能是最简单的。我们有机器A
和B
。机器A具有T1
和T2
的关系T1 < T2
。计算机B
具有T3
和T4
T3 > T4
。
现在,本地图只是T2必须等待T1而T3必须等待T4。所以没有本地周期。但现在,假设我们有T4 < T1
所以T1必须等待T4。同时T2 < T3
所以T3必须等待T2。在这种情况下,全球都有一个周期。
那么这个循环是如何发生的?关键在于您从未在分布式系统中获得完整信息。所以我们稍后可能会了解到机器间的依赖关系。然后我们遇到了问题。
答案 1 :(得分:0)
时间戳用于确定计算机上本地进程之间的冲突解决方案。它提供了一种解决该级别死锁的方法。对于分布式进程,可能有两个进程在不同的机器上相互等待。这实际上是一个常规的死锁,但是跨机器。这称为“全局”死锁。也可以在那里使用Imho时间戳,但这显然是不切实际的。
有关此问题的一些信息可以在http://www.cse.scu.edu/~jholliday/dd_9_16.htm
上找到