MYSQL锁机制行锁、表锁、死锁的实现
一、MYSQL锁是什么?有什么类别
锁定义 :
同一时间同一个资源只能被一个线程访问
乐观锁和悲观锁
乐观锁用的最多的就是数据库中的表加了一个标识字段 version
例如 update text set a=a+1 where id=100 and a>0
锁发分类
表锁和行锁
行锁必须要有索引才可以实现,否则会自动锁全表,那么就不是行锁了
两个事务不能锁同一个索引
insert delete update 在事务中默认都会加上排它锁
表锁
不会出现死锁,发生冲突的几率高并发低
从对数据的操作类型分法(读或者写)
读锁(共享锁):针对同一分数据,可以多个读的操作可以同事进行
写锁(排它锁): 当前操作没有完成前,它会阻断其他的其他读锁和写锁;
什么是死锁?
产生场景:两个事务都有 select for update , a先锁记录1 ,再锁记录2 ;而b先锁记录2在锁记录1
写锁 for update ,读锁 for my share mode show engine innodb status
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通