mysql update 锁的问题
2020-07-15 本文已影响0人
京_阿_尼
准备
建表语句
create table if not exists tab_no_index
(
id int null,
name varchar(10) null
);
create index ind_tab_no_index_id
on test.tab_no_index (id);
插入数据
INSERT INTO tab_no_index (id, name) VALUES (1, '1');
INSERT INTO tab_no_index (id, name) VALUES (2, '2');
INSERT INTO tab_no_index (id, name) VALUES (3, '3');
INSERT INTO tab_no_index (id, name) VALUES (4, '4');
场景
场景一
根据 id
字段进行更新,验证是锁当前行。
sql 执行时序
session 1 | session 2 |
---|---|
start transaction; | |
start transaction; | |
update tab_no_index set name=11 where id=1 |
|
update tab_no_index set name=22 where id=2 |
以上顺序执行sql,session 2的 update 语句不会被阻塞。
场景二
根据 name
字段进行更新,验证是锁所有行。
sql 执行时序
session 1 | session 2 |
---|---|
start transaction; | |
start transaction; | |
update tab_no_index set id=11 where name=1 |
|
update tab_no_index set id=22 where name2 |
以上顺序执行sql,session 2的 update 语句会被阻塞。