gpt4 book ai didi

MySQL InnoDB : Difference Between `FOR UPDATE` and `LOCK IN SHARE MODE`

转载 作者:IT老高 更新时间:2023-10-28 23:54:03 27 4
gpt4 key购买 nike

这两个锁读子句的确切区别是什么:

SELECT ... FOR UPDATE

SELECT ... LOCK IN SHARE MODE 

为什么你需要使用一个而不是另一个?

最佳答案

我一直在努力理解两者之间的区别。我将记录我的发现,希望它对下一个人有用。

LOCK IN SHARE MODEFOR UPDATE 都确保没有其他事务可以更新选定的行。两者之间的区别在于它们在读取数据时如何处理锁。

LOCK IN SHARE MODE 不会阻止另一个事务读取被锁定的同一行。

FOR UPDATE 防止同一行的其他锁定读取(非锁定读取仍然可以读取该行;LOCK IN SHARE MODEFOR UPDATE 正在锁定读取)。

这在像更新计数器这样的情况下很重要,在这种情况下,您在 1 个语句中读取值并在另一个语句中更新值。这里使用 LOCK IN SHARE MODE 将允许 2 个事务读取相同的初始值。因此,如果两个事务都将计数器递增 1,则结束计数可能仅递增 1 - 因为两个事务最初读取的是相同的值。

使用 FOR UPDATE 会锁定第二个事务,使其无法读取值,直到第一个事务完成。这将确保计数器递增 2。

关于MySQL InnoDB : Difference Between `FOR UPDATE` and `LOCK IN SHARE MODE` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32827650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com