当前位置:网站首页>【mysql专项】读锁和写锁
【mysql专项】读锁和写锁
2022-07-03 11:07:00 【程序员·小李】
mysql中存在四个队列,分别存储当前获取读锁的信息、当前获取写锁的信息、等待读锁的信息、等待写锁的信息:
队列 | 含义 |
current read-lock queue | 当前获取读锁队列 |
current write-lock queue | 当前获取写锁队列 |
pending read-lock queue | 等待读锁队列 |
pending write-lock queue | 等待写锁队列 |
读锁的获取条件
1. 当前资源没有被写锁被占用。
2. 当前没有 等待写锁队列 中没有高优先级的写锁等待。
如果满足上述条件,可直接获取到读锁,若有一个无法满足,则进入PRQ
写锁的获取条件
1. 当前资源没有被写锁占用。
2. PWQ没有等待写锁
3. RQ没有读锁
锁,就是一台电脑。
现有写锁时,排斥任何锁
众所周知,写锁排斥一切,为了数据安全,和数据读取的准确性,写锁排斥其他一切形式的锁。
写锁就如同你正在玩【写】电脑游戏,别人肯定不能同时玩【写】这台电脑,想玩【意向写】也玩不了。同时,玩游戏的人还比较自私,怕输了丢人,不让别人一旁观看【读】,想看【意向读】也不让看。
现有读锁时,排斥一切形式的写锁,包括意向写锁
有读锁时,不能再加写锁。但是可以允许并发读。意向锁虽然是一种意向,不是真正意义上的锁,但是也存在着读写排斥的道理。
读锁就如同你正在用电脑看【读】电影,别人肯定不能同时玩【写】电脑游戏,想玩【意向写】也玩不了。同时,看电影的人懂得分享,邀请别人一同观看【读】,想看【意向读】也让看。
现有意向写锁时,排斥一切实体锁
意向写锁,表示我想要写,下一步就是真的获取到了写锁,所以会排斥实体读写锁,但是意向毕竟是意向,还没有实际意义获取到,你不能不允许别人也臆想。
意向写锁就如同你排队等电脑玩【写】游戏,下一个就到你了,排队这么久,别人来玩【写】游戏你肯定不答应,别人来看【读】电影你肯定也不答应。有人许愿:”但愿下一个到我玩游戏了【意向写】“,你说:”不出意外的话马上到我了,你继续YY吧,允许你想想“。有人许愿:”但愿下一个到我看电影了【意向读】“,你说:”不出意外的话马上到我了,你继续YY吧,允许你想想“。
现有意向读锁时,排斥实体写锁
意向写锁是一种意向,打算读,下一步就是获取读锁。这就会排斥实际的写锁。前面说到允许并发读,所以不会排斥读锁。意向也毕竟是意向,不能不允许别人臆想。
意向读锁就如同你排队等看【写】电影,下一个就到你了,别人来玩【写】游戏你肯定不答应,别人一起来看【读】电影你欣然答应(毕竟现在还没到我,何况他有可能邀请我一起看)。有人许愿:”但愿下一个到我玩游戏了【意向写】“,你说:”不出意外的话马上到我了,你继续YY吧,允许你想想“。有人许愿:”但愿下一个到我看电影了【意向读】“,你说:”不出意外的话马上到我了,你继续许愿吧,没准还能一起看“。
Update使用where条件时,命中索引,锁定一行,行写锁使用
Update使用where条件时,没有命中索引,锁表
update使用where条件时,命中索引,但是使用范围,锁定间隙
update使用where条件,部分条件使用索引,锁定该索引覆盖的所有数据行,数据行锁
两个事务均操作两张表,先后获取不同的锁,导致死锁
边栏推荐
- R语言使用gridExtra包的grid.arrange函数将lattice包的多个可视化图像横向组合起来,ncol参数自定义组合图列数、nrow参数自定义组合图行数
- Unity3d learning notes 5 - create sub mesh
- Concurrent programming - singleton
- typeScript
- R语言ggplot2可视化:gganimate包创建动态折线图动画(gif)、使用transition_reveal函数在动画中沿给定维度逐步显示数据、在折线移动方向添加数据点
- vulnhub之raven2
- vulnhub之narak
- 导师对帮助研究生顺利完成学业提出了20条劝告:第一,不要有度假休息的打算.....
- 基于turtlebot3实现SLAM建图及自主导航仿真
- 简单工厂和工厂方法模式
猜你喜欢
随机推荐
2022年中南大学夏令营面试经验
Experience container in libvirt
STL教程10-容器共性和使用场景
previous permutation lintcode51
R语言使用原生包(基础导入包、graphics)中的hist函数可视化直方图(histogram plot)
R语言使用aggregate函数计算dataframe数据分组聚合的均值(sum)、不设置na.rm计算的结果、如果分组中包含缺失值NA则计算结果也为NA
R language uses grid of gridextra package The array function combines multiple visual images of the lattice package horizontally, and the ncol parameter defines the number of columns of the combined g
XML (DTD, XML parsing, XML modeling)
Xiaopeng P7 hit the guardrail and the airbag did not pop up. The official responded that the impact strength did not meet the ejection requirements
Momentum of vulnhub
Unity3d learning notes 5 - create sub mesh
typeScript
优化接口性能
R语言使用gridExtra包的grid.arrange函数将lattice包的多个可视化图像横向组合起来,ncol参数自定义组合图列数、nrow参数自定义组合图行数
MySQL searches and sorts out common methods according to time
Concurrent programming - singleton
Introduction to the implementation principle of rxjs observable filter operator
uniapp实现点击加载更多
Web安全总结
STL教程9-容器元素深拷贝和浅拷贝问题