数据库锁
https://www.cnblogs.com/itdragon/p/8194622.html
https://blog.csdn.net/yinjinshui/article/details/101759058
https://zhuanlan.zhihu.com/p/48269420
1、互斥条件:一个资源每次只能被一个进程使用;
2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;
3、不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺;
4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系
按锁定粒度:表锁、页面锁、行锁
存储引擎支持情况:
在具体说明之前得明白什么是死锁,什么是锁冲突
死锁: 多个进程互相等待对方锁的释放
锁冲突:一个进程等待另一个进程释放需要的锁
行锁
粒度小,开销大,加锁慢,会产生死锁,发生锁冲突的概率最低,并发度也最高。
备注:在InnoDB中,锁是逐步获得的,这可能造成多个进程互相等待的尴尬局面,造成了死锁。
分类:共享锁 排他锁
备注: 共享锁又称读锁,排他锁又称写锁
表锁
粒度大,开销小,加锁快,不会出现死锁,发出锁冲突的概率最高,并发度最低。
备注:MyISAM总是一次性获得所需的全部锁,要么全部满足,要么全部等待,因此不会产生死锁。
分类:表共享锁
、表排他锁
页面锁
各方面介于行锁与表锁之间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix