使用join时MySQL锁定
在2表联接查询中选择“FOR UPDATE”时,我对mysql/innodb锁定有疑问。例如: 2个表-使用join时MySQL锁定,mysql,transactions,innodb,locks,Mysql,Transactions,Innodb,Locks,在2表联接查询中选择“FOR UPDATE”时,我对mysql/innodb锁定有疑问。例如: 2个表-项目,队列queue.id是与items.id(外键)的1:1连接队列。状态为带有索引的枚举。队列的行数非常少,而items表相对较大 SELECT * FROM `items` INNER JOIN queue ON items.id = queue.id WHERE queue.status = 'new' FOR UPDATE; 表项目中的选定行是否会被独占锁定
项目
,队列
queue.id
是与items.id(外键)的1:1连接<代码>队列。状态为带有索引的枚举。队列的行数非常少,而items表相对较大
SELECT *
FROM `items`
INNER JOIN queue
ON items.id = queue.id
WHERE queue.status = 'new'
FOR UPDATE;
项目中的选定行是否会被独占锁定
队列
表中包含stats='new'的所有行除外)选择时。。。对于UPDATE
(在同一事务中),锁被升级为独占,很容易发生死锁-两个线程可以获得共享锁,然后它们都将等待对方释放锁以获得独占锁。在这种情况下是否有可能(也听说外键构成共享锁)