首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表锁和行锁之间的差异

表锁和行锁之间的差异
EN

Stack Overflow用户
提问于 2018-05-21 12:26:44
回答 1查看 2.3K关注 0票数 3

我正在研究MySQL以及它是如何工作的,有些东西让我感到困惑,我在网上找不到任何关于这一点的明确解释。

行锁和表锁到底有什么区别?一个锁行,另一个锁表。对,是这样?

那么,在哪种情况下您会使用表锁和行锁?这是程序员或数据库管理人员可以编程的东西,还是为您而设的环境呢?

如果你认为有任何其他的信息是好的,你可以添加到你的答案。我很抱歉这可能是个粗俗的问题,但我还在学习。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-21 12:51:01

虽然这是server,但它也很好地应用于mySQL:什么是行、页和表锁?当他们被获得的时候?

MySQL文档显示了以下内容

通常,在下列情况下,表锁优于行级锁:

  • 表的大多数语句都是读的。
  • 表的语句是读和写的混合,其中写是可以用一个键读取的单个行的更新或删除:
  • 选择结合并发INSERT语句,很少有更新或删除语句。
  • 许多扫描或按整个表上的操作分组,没有任何写入器。

现在何时使用:臭名昭著的“它取决于”适用于这里:问问自己,这个事务的用例是什么?

通常,当需要高粒度控制时,将使用行级锁定。在我看来,这应该是默认的。例如,可以更新或删除订单的订单或订单明细表。将整个表锁定在一个高事务量表上是没有意义的。我希望单个订单的用户能够更新每个订单,而不是锁定其他人,当我知道他们的更改范围仅限于特定的订单时。

现在,如果出于某种原因需要从备份恢复orders和details表,或者基于外部源对许多记录进行许多更新;我可能会锁定整个表,以确保所有更新都成功完成,并且可以在任何人返回之前验证加载。在进行所需的更新时,我不希望进行任何更改。但是,我们必须考虑锁定整个表是否会对用户体验产生负面影响;或者如果我们没有其他可用的选项。在表级别锁定将防止其他用户更改任何值。这就是我们想要的吗?

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

https://stackoverflow.com/questions/50448899

复制
相关文章

相似问题

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