首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB锁是如何绑定到连接和会话的?

DB锁是如何绑定到连接和会话的?
EN

Database Administration用户
提问于 2013-03-08 21:34:29
回答 1查看 7.7K关注 0票数 3

我听说过页面和行级别的锁,但从未听说过用于会话和连接的锁。今天,我们的(MySQL) DBA讨论了行锁,并暗示它们的作用域可以在连接或会话级别上设置。这是真的,还是我误解了他?

我没有意识到,当连接建立(或会话启动时)时可以设置锁,然后在连接/会话结束时释放锁。如果这是真的,这对行/页级别的锁有什么好处?提前谢谢。

EN

回答 1

Database Administration用户

发布于 2013-03-08 21:46:01

在某种程度上,是的。

当涉及到InnoDB时,可以选择哪些行可以被锁定。它与其说是DB连接的特定设置,不如说是DB连接的特定设置。这是在进行更新之前必须调用的一个特定查询。

  • SELECT ... FOR UPDATE
  • SELECT ... LOCK IN SHARE MODE

这可以根据这些选择的结果集启动独占或共享行锁。

您可以在MySQL文档中找到有关这方面的更多信息。

我以前写过关于使用以下内容的文章:

关于会话和连接

  • 执行SELECT ... FOR UPDATE将启动要更新的行的锁,并且仍然允许读取其他DB连接。
  • 执行SELECT ... LOCK IN SHARE MODE本质上执行反向
    • 锁定行,供您阅读
    • 允许相同锁定行的选择
    • 防止连接执行SELECT ... FOR UPDATE或直接DML

在使用这些SELECT查询时,我看到的唯一优点是防止页面上不必要的死锁。

希望这能帮上忙!

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

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

复制
相关文章

相似问题

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