1. 共享锁
select 可以允许多个
加上共享锁不能进行数据修改
2. 排它锁
3. 意向锁
主要就是为了看表上是否有锁。一个标记。加共享锁/排它锁自动加上的。如果有共享锁/排它锁肯定有意向共享锁/意向排它锁。
如果想锁全表就需要每行去查看是否有锁,所以存在意向锁。提高加锁效率
3.
没有索引: 排它锁就会锁全表
主键索引:只会锁一行数据
唯一索引: 因为唯一索引是通过唯一索引找到主键索引,找到对应的数据,所以锁唯一索引对应的唯一索引也会锁定。
例如 id 主键 name 唯一索引
id: 5 name: name5
select * from table where name ='name5' for update;锁定name='name5'行数据
select * from table where id = 5 for update 会失败
4.临健锁
范围查询会所当前左开右边区间和下一个左开右边范围。 解决幻读
5.间隙锁
可以在两个事务获取间隙锁
6.记录锁