当前位置: 首页 > 装修知识 > 正文
锁的种类|mysql中的锁详解
2022-10-08 06:57:20一 锁分类
从性能上分为乐观锁(用版本对比来实现)和悲观锁
从对数据库操作的类型分,分为读锁和写锁(都属于悲观锁)
读锁(共享锁,S锁()):针对同一份数据,多个读操作可以同时进行而不会互相影响
写锁(排它锁,X锁()):当前写操作没有完成前,它会阻断其他写锁和读锁
从对数据操作的粒度分锁的种类,分为表锁和行锁
二 表锁
每次操作锁住整张表。开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;一般
用在整表数据迁移的场景。
--手动增加表锁
lock table 表名称 read(write),表名称2 read(write);
--查看表上加过的锁
show open tables;
--删除表锁
unlock tables;
三 行锁
每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。
注意:锁主要是加在索引上,如果对非索引字段更新,行锁可能会变表锁 ,的行锁是针对索引加的锁,不
是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为 。
四 间隙锁(Gap Lock)
间隙锁锁的种类,锁的就是两个值的间隙,间隙锁和间隙锁不互斥,法在这个范围所包含的所有行记录(包括间隙行记录)以及行记录所在的间隙里插入或修改任何数据,而且是在可重复读的隔离级别下,举个例子
user 表中
id name
1 zhangsan
2 lisi

3 wangwu
10 zhaoliu
20 sunqi
--sql 语句
update user set name='666' where id >5 and id
(3,10) (10,20) (20,+∞)
id >5 落在了 (3,10) 这个间隙中
id<19 落在了 (10,20) 这个间隙中
对这两个间隙进行加锁
下面这个语句就会被阻塞住
insert user into (id,name) values(6,xiaoming),落在了间隙(3,10)中
五 临键锁(Next-key Locks)
Next-Key Locks是行锁与间隙锁的组合。像上面那个例子里的这个(3,20]的整个区间可以叫做临键锁。
六 锁优化建议
记住一句话:锁在用的时候就会加上,也就是mysql会自动加上,但是用完之后不会自动解锁,直到事务结束的时候才会解锁
尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁
合理设计索引,尽量缩小锁的范围
尽可能减少检索条件范围,避免间隙锁
尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的sql尽量放在事务最后执行
尽可能低级别事务隔离
以上内容为蝴蝶兰风评投稿者为大家精心整理,希望对大家有所帮助!
- 上一篇:装修瓷砖损耗率一般是多少
- 下一篇:房屋层高|商品房顶层阁楼是怎么算面积的
猜你喜欢
- 2022-10-08 02:51:39锁的种类|公寓智能锁分类及其检测设备
- 2022-10-08 02:09:53锁的种类|智能锁材质这么多,哪种材质才最好
- 2022-10-03 03:21:48锁的种类|网传钥匙安全分类图 开锁匠称不反锁等于没锁
- 2022-10-03 00:44:32锁的种类|防盗锁种类
留言与评论(共有 条评论) |
- 搜索
-
- 10-18APF防水卷材
- 10-18液压油过滤器规格型号
- 10-18玻璃胶多久能干?使用注意事项请谨记
- 10-18防雷接地检测主要都检测什么?
- 10-18空调大插头买什么插板(空调插头应该买多大的插排)
- 10-18粘贴钢板加固怎么施工?注意事项是什么?如何选材料、粘钢胶标准是什么
- 10-18干货 | 岩板界的什么规格才能稳占家居空间的C位?
- 10-18不锈钢锅烧黑了怎么办 怎么清理 锅烧干后能直接倒水吗?
- 10-18一寸水管直径是多少0
- 10-18冰箱温度调到多少合适 细节决定保鲜