我正在研究MySQL以及它是如何工作的,有些东西让我感到困惑,我在网上找不到任何明确的解释。
行锁和表锁之间究竟有什么区别?一个锁定行,另一个锁定表。正确?
那么,在哪种情况下你会使用表锁和行锁?这是程序员或数据库管理员可以编程的东西,还是为你做这件事的enigne?
如果您认为有任何其他信息可以提供,请随时将其添加到您的答案中。 我很抱歉这可能是一个愚蠢的问题,但我还在学习。
答案 0 :(得分:0)
虽然这是SQL服务器,但它也适用于mySQL:What are row, page and table locks? And when they are acquired?。
通常,在以下情况下,表锁优于行级锁:
现在何时使用:臭名昭着的"它取决于"适用于: 问问自己此次交易的用例是什么?
通常在需要高粒度控制时使用行级锁定。在我看来,这应该用作默认值。说出可以更新或删除订单的订单或订单明细表。将整个表锁定在高事务量表上是没有意义的。我希望个别订单的用户能够更新每个订单,并且当我知道他们的更改范围仅限于特定订单时,不会将其他人锁定。
现在,如果由于某种原因我需要从备份中恢复订单和详细信息表;或基于外部源对许多记录进行许多更新;我可以锁定整个表格以确保所有更新都成功完成,并且在我让任何人重新登录之前我可以验证负载。在我进行所需更新时,我不想要任何更改。但我们必须考虑锁定整个表是否会对用户体验产生负面影响;或者如果我们没有其他选择。锁定表级别将阻止其他用户更改任何值。这真的是我们想要的吗?