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的数据,会失败,从而解决幻读问题。
临建锁:
每天坚持,终会抵达!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了