想知道MySql中组合键上的更新查询锁是如何工作的吗?
示例:如果表A具有组合键a1 & a2
a1 | a2 | a3
1 | a | 10
1 | b | 11
1 | c | 12
2 | a | 20
2 | b | 21如果我们执行一个查询锁,那么1行或4行会获得UPDATE TABLE A SET a3 = 30 WHERE a1 = 1 AND a2 = a吗?
发布于 2020-02-03 21:48:08
快速实验表明,在这种情况下,只有一行被锁定。我用一个复合主键对其进行了测试:
CREATE TABLE `lock_tst` (
`k1` INT(11) NOT NULL,
`k2` INT(11) NOT NULL,
`f1` INT(11) NOT NULL,
PRIMARY KEY (`k1`, `k2`)
)
ENGINE=InnoDB和像这样的锁定语句:
select * from test.lock_tst where k1=1 and k2=42 for update;还应该注意的是,不能保证MySQL总是锁定最少的可能行。
https://stackoverflow.com/questions/60040410
复制相似问题