mysql - 既然没有事务 SELECT FOR UPDATE 是没有意义的,而且事务本身使用锁,那么 SELECT FOR UPDATE 的用例是什么?
问题描述
从这里: https ://stackoverflow.com/a/27868682/10894456
SELECT ... FOR UPDATE 将使用写(独占)锁锁定记录,直到事务完成(提交或回滚)。
要选择一条记录并确保在您更新它之前它不会被修改,您可以启动一个事务,使用 SELECT ... FOR UPDATE 选择记录,进行一些快速处理,更新记录,然后提交(或回滚)事务.
在这里 https://stackoverflow.com/a/5411366/10894456
请注意,事务之外的 FOR UPDATE 是没有意义的
因此,既然没有事务的 INSERT FOR UPDATE 是没有意义的,并且事务本身使用锁,那么 INSERT FOR UPDATE 的用例是什么?我唯一的猜测:SELECT ... FOR UPDATE 只有在事务具有低隔离级别(如 read_uncommit)时才有意义,但我不确定,请帮帮我
解决方案
在这里找到:https ://stackoverflow.com/a/16963718/10894456
SERIALIZABLE 和使用 SELECT FOR UPDATE 之间的主要区别在于 SERIALIZABLE 总是锁定所有内容。与 SELECT FOR UPDATE 一样,您可以选择锁定的内容和时间。
所以 SELECT FOR UPDATE 让我们变得挑剔
推荐阅读
- c# - MS Chart - 在运行时更新折线图中的 X 轴刻度值
- spring-boot - 带有spring boot的json序列化器
- snakemake - 我可以在 Snakemake 中将输出作为带有通配符的输入的目录吗?绕过失败的工作并强制规则顺序
- android - 如何整合instagram快反应动画?
- azure-cognitive-search - Azure 搜索:搜索索引中反映的数据延迟
- node.js - 在 express.js 上带有 redis 适配器的 socket.io:如何让所有套接字会话进入房间?
- python - 根据 pandas 中的 3 个不同列查找计数列
- xcode - Xcode 10.2 未显示自动完成
- angular - 使用 Angular 7 将 2 个图像一个接一个地合并?
- react-native - 如何使用 react-native-push-notification 和 Firebase 向多个设备广播推送通知?