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