我正在阅读有关在分布式数据库中使用时间戳进行并发控制的优点/缺点的一些资料。我正在阅读的 Material 提到,尽管时间戳克服了可能影响锁定的传统死锁问题,但仍然存在“全局死锁”问题,它很容易受到攻击。
该 Material 将全局死锁描述为局部图的等待图中不存在环但全局图存在环的情况。
我想知道这怎么会发生?有人可以描述时间戳系统可能导致此问题的情况吗?
最佳答案
这是一个例子,可能是最简单的例子。我们有机器A
和 B
.机器A有锁T1
和 T2
与关系T1 < T2
.机B
有T3
和 T4
与 T3 > T4
.
现在,本 map 只是 T2 必须等待 T1,T3 必须等待 T4。所以没有本地循环。但是现在,假设我们有 T4 < T1
所以T1必须等待T4。同时T2 < T3
所以T3必须等待T2。在这种情况下,全局存在一个循环。
那么这个循环是如何发生的呢?这里的关键是您永远不会拥有分布式系统中的完整信息。所以我们稍后可能会了解到机器间的依赖关系就在那里。然后我们遇到了问题。
关于database - 时间戳如何导致 "global deadlock"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392373/