mysql select for update正在锁定整个表

7kqas0il  于 2021-08-09  发布在  Java
关注(0)|答案(0)|浏览(261)

mysql版本5.7.16
过程1:

START TRANSACTION;
SELECT * from statistic_activity WHERE activity_id = 1 FOR UPDATE;

过程2:

START TRANSACTION;
INSERT INTO `statistic_activity`  (`activity_id`)  values (2678597);

如果进程1 select语句返回结果,则进程2不会被阻止(如您所料)
但如果进程1返回空集(不存在activity_id=1的行),则整个表被锁定,所有插入都被阻止,直到进程1事务结束。
这是预期的行为吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题