我正在研究MySQL以及它是如何工作的,有些东西让我感到困惑,我在网上找不到任何关于这一点的明确解释。
行锁和表锁到底有什么区别?一个锁行,另一个锁表。对,是这样?
那么,在哪种情况下您会使用表锁和行锁?这是程序员或数据库管理人员可以编程的东西,还是为您而设的环境呢?
如果你认为有任何其他的信息是好的,你可以添加到你的答案。我很抱歉这可能是个粗俗的问题,但我还在学习。
发布于 2018-05-21 12:51:01
虽然这是server,但它也很好地应用于mySQL:什么是行、页和表锁?当他们被获得的时候?。
通常,在下列情况下,表锁优于行级锁:
现在何时使用:臭名昭著的“它取决于”适用于这里:问问自己,这个事务的用例是什么?
通常,当需要高粒度控制时,将使用行级锁定。在我看来,这应该是默认的。例如,可以更新或删除订单的订单或订单明细表。将整个表锁定在一个高事务量表上是没有意义的。我希望单个订单的用户能够更新每个订单,而不是锁定其他人,当我知道他们的更改范围仅限于特定的订单时。
现在,如果出于某种原因需要从备份恢复orders和details表,或者基于外部源对许多记录进行许多更新;我可能会锁定整个表,以确保所有更新都成功完成,并且可以在任何人返回之前验证加载。在进行所需的更新时,我不希望进行任何更改。但是,我们必须考虑锁定整个表是否会对用户体验产生负面影响;或者如果我们没有其他可用的选项。在表级别锁定将防止其他用户更改任何值。这就是我们想要的吗?
https://stackoverflow.com/questions/50448899
复制相似问题