ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库锁总结

2022-04-09 22:32:01  阅读:191  来源: 互联网

标签:总结 加锁 数据库 update 表级 插入 意向锁 id



共享锁:也称读锁。
排他锁:也称写锁。

锁粒度角度划分:
表级锁:
S锁:共享锁
X锁:排他锁
意向锁:行级锁的锁定同时,会同时在表级进行,读或者写的意向锁。当有表级锁时直接就能判断不能锁定需要等待。
自增锁:自增ID上的锁,分为三种,8.0之前有两个,表级别锁和连续锁(拿到锁可申请连续自增数据),8.0之后进行优化,申请的自增数据可能不连续。
元数据锁(MDL锁):修改表结构

行级锁:
记录锁(S锁:共享锁、X锁:排他锁)
间隙锁(gap locks):避免插入幻影记录。解决幻读。共享锁和排他锁都可以作为间隙锁,如:已有id:1,5,8 select * from a where id = 3 for update;锁定范围:(1,5)之间的id。
如果where id = 10 for update; 则范围就是(8,+无穷大)
临键锁:建于记录锁和间隙锁。
插入意向锁:等待其他锁释放的,插入数据。此插入数据就持有插入意向锁。

锁态度划分:
悲观锁:竞争激烈,直接用悲观锁,for update。适合写多的场景,防止写读冲突,减少乐观锁频繁充实对资源的消耗。
乐观锁:竞争不是很激烈,用版本号或者时间戳进行加锁。适合读比较多的场景。

加锁方式划分:
显式锁:delete,update等加锁操作。for update,lock share in mode;
隐式锁:insert操作等。

标签:总结,加锁,数据库,update,表级,插入,意向锁,id
来源: https://www.cnblogs.com/stubborn-dude/p/16121314.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有