Mysql 锁的分类

锁的分类:表级锁、行级锁

InnDB:

共享排他锁:

共享锁含义:共享锁允许事务并发读取一行数据,但是不能修改。 
SQL语句:select 后缀  share

排他锁含义:允许持有的事务修改、删除某行数据

SQL语句:select 后缀 for update

 

意向锁

含义:某个时刻,事务要加共享/排他锁,需要设置提前声明。

包括:意向排他锁、意向共享锁

特性:某个事务对A表R行读/删/改,需要获取对应的意向共享锁或意向排他锁。

目的:提高事务锁的查找效率。

场景:

id title
1 huihui
2 test1

 

 

 

事务对表ID=2操作修改,对ID=2增加意向排他锁,事务B需要添加表锁。这个时候就不需要遍历表的每一行,排他锁释放后才能进行增加表锁操作。

 

记录锁:

含义:通过查找索引而锁住索引行记录,防止事务对同一记录操作增删改。

事务A
select * from test_table where id = 1 for update
事务B
update from test_table set name = 'huihui  where id = 1

B事务会阻塞

 

间隙锁:

含义:可重复读隔离级别,存在幻读问题,通过间隙锁锁住索引里面的间隙,解决幻读问题。

事务A执行 select * from where test_table where id between 0 and 20 for update; (没有ID=8数据)

事务B插入ID = 8的数据,会失败,从而解决幻读问题。

 

临建锁:

 

posted @ 2023-10-30 21:25  辉辉、  阅读(4)  评论(0编辑  收藏  举报