database - 时间戳如何导致 "global deadlock"?

标签 database concurrency timestamp distributed-computing

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

该 Material 将全局死锁描述为局部图的等待图中不存在环但全局图存在环的情况。

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

最佳答案

这是一个例子,可能是最简单的例子。我们有机器AB .机器A有锁T1T2与关系T1 < T2 .机BT3T4T3 > T4 .

现在,本 map 只是 T2 必须等待 T1,T3 必须等待 T4。所以没有本地循环。但是现在,假设我们有 T4 < T1所以T1必须等待T4。同时T2 < T3所以T3必须等待T2。在这种情况下,全局存在一个循环。

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

关于database - 时间戳如何导致 "global deadlock"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392373/

相关文章:

database - 在 Visual Studio 中,如何在不关闭数据库表的情况下将数据提交到数据库表?

python - Google App Engine - ndb 按字符串排序? (Python)

c# - SQL删除具有多个标识符的多行

c++ - VS2010 并行模式库 (PPL) parallel_for_each 算法是否支持 std::set<>?

非 Activity 用户的 Java 超时

mysql - MYSQL 中的自定义更新时间

php - mysql 查询连接多表

objective-c - NSURLConnection 与 NSRunLoopCommonModes

android 没有得到正确的时间戳

同一列上记录的MySQL时间戳差异