首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于一系列短交易而饥饿

由于一系列短交易而饥饿
EN

Stack Overflow用户
提问于 2021-02-20 09:10:50
回答 1查看 34关注 0票数 1

为什么要用一系列的空头交易来说明呢?如果交易是长的,应该没有区别,不是吗?

但是,

必须注意避免出现以下情况。假设事务T2对数据项具有共享模式锁,而另一个事务T1请求数据项上的独占模式锁。T1必须等待T2释放共享模式锁。同时,事务T3可以请求同一数据项上的共享模式锁.锁请求与授予T2的锁兼容,因此T3可以被授予共享模式锁。此时,T2可能会释放锁,但T1仍然必须等待T3完成。但是,可能会有一个新的事务T4请求同一数据项上的共享模式锁,并在T3释放该锁之前授予该锁。事实上,有可能存在一个事务序列,每个事务都请求数据项上的共享模式锁,并且每个事务在它被授予后一段时间内释放锁,但是T1永远不会获得数据项上的独占模式锁。事务T1可能永远不会取得进展,据说是饿死了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-20 14:28:43

长事务(在时间上)实际上比短事务更容易受到阻塞问题的影响。因此,通常建议将事务设计为尽可能短的时间保持阻塞锁。

因此,在上面的场景中,一系列“长”事务实际上更有可能导致这个问题。然而,作者引用了一系列的“空头”事务来强调,即使交易短(如果有足够多的几乎同时兼容的事务),也可能出现这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66289825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档