首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lock_timeout和deadlock_timeout有什么区别?

问lock_timeout和deadlock_timeout有什么区别?
EN

Database Administration用户
提问于 2020-04-08 08:36:00
回答 2查看 1.2K关注 0票数 0

lock_timeout和deadlock_timeout之间的游戏是什么?

lock_timeout发生不导致死锁超时的原因是什么?我无法从数据库的角度考虑场景?

EN

回答 2

Database Administration用户

发布于 2020-04-08 09:46:32

活锁(由lock_timeout处理)和死锁之间的区别在于,死锁保证永远不会结束,因为两个(或更多)会话正在等待对方。

活动锁总是可以结束的--只要锁定资源的会话结束数据库事务,它就会结束。在死锁的情况下,这是不可能的,因为所有涉及的事务都被阻塞,不能继续。

默认情况下,数据库通过杀死其中一个涉及的事务来解决死锁,但它不会中断活锁。

票数 3
EN

Database Administration用户

发布于 2020-04-08 08:45:41

如果一个数据库会话需要等待另一个会话,因为它需要具有相同的锁--例如,这只是一个锁等待问题:您使用lock_timeout。

死锁是等待锁问题的一个非常特殊的情况,其中多个会话彼此等待,但无法工作:数据库决定杀死其中一个涉及的事务来修复此问题,以便至少一个数据库会话不再被阻塞。参数deadlock_timeout是

在检查是否存在死锁条件之前等待锁的时间(以毫秒为单位)。

死锁是发生频率较低的锁定情况的一种特例(通常是由于应用程序代码对相同的数据库对象进行锁,而不是按相同的顺序进行锁)。

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

https://dba.stackexchange.com/questions/264559

复制
相关文章

相似问题

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