共享锁与排它锁在两个存储引擎中都存在吗?InnoDB中select能否自动上锁

来源:3-12 锁模块之MyISAM与InooDB关于锁方面的区别_2

qq_君君晨晨_0

2019-03-30

老师您好,学了课之后我还有两个问题不确定,想求证一下我的理解是否正确.

  1. 共享锁排他锁在两个存储引擎中都存在,只不过一个是作用在表中,一个是作用在行中.
  2. 在MyISAM引擎中增删查改都会自动上锁,在InnoDB中,select要主动上锁才行,增删改InnoDB会主动上锁.
    不知道我上面的理解对不对?
写回答

1回答

白平衡

2019-03-31

你说的我感觉是对的,我再帮你多总结一点,

InnoDB在sql没有用到索引的时候会锁表而不是锁行,索引(一般是主键)不明确时也是锁表,

例如select * from tableName where id < 8 for update

select * from tableName where id like 8 for update

都是会锁表的,

select * from tableName where id = 8 for update 此条如果有数据是会锁定id为8的数据而不是锁表。




0
2
qq_君君晨晨_0
谢谢大家!
2019-04-01
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程