以下查询
SELECT * FROM (SELECT * FROM Users) WHERE Id = 1
和
SELECT * FROM Users Where Id = 1
是等价的。但根据文档,在Serializable模式下,所有选择都是在LOCK IN SHARED MODE中进行的。这是否意味着在第一个示例中整个Users表将以共享模式锁定?
答案 0 :(得分:1)
我认为你误解了共享模式锁的概念。来自MySQL documentation:
SELECT ... LOCK IN SHARE MODE设置a 读取的行上的共享模式锁定。一个 共享模式锁启用其他 会话来读取行而不是 修改它们。
因此可以进行并发读取。只有修改才会延迟,直到您的查询被执行。