当前位置:网站首页>MySQL-锁机制
MySQL-锁机制
2022-08-02 07:00:00 【kk_lina】
协调并发访问某一资源的机制。
一、并发问题的解决方案
如何解决脏读、不可重复读、幻读的问题?
1、方案一:读操作利用多版本并发控制,写操作进行加锁
生成一个ReadView,通过ReadView找到符合条件的记录版本。查询语句只能读到在生成ReadView之前已提交事务所做的更改,在生成ReadView之前未提交的事务或者之后才开启的事务所做的更改是看不到的。而写操作肯定针对的是最新版本的记录,读操作的历史版本和改动记录的最新版本本身并不冲突,也就是采用mvcc时,读-写操作并不冲突。
普通的select语句在read commited和repeatable read隔离级别下会使用到MVCC读取记录。
在read committed 隔离级别下,一个事务在执行过程中每次执行select操作时会生成一个ReadView,ReadView存在的本身就保证了事务不可以读取到未提交的事务所做的更改,也就避免了脏读现象;
在repeatable read隔离级别下,一个事务在执行过程中只有第一次执行select操作才会生成一个ReadView,之后的select复用这个ReadView,这样可以避免幻读和不可重复读的问题。
2、方案二:读写操作都采用加锁的方式
读写操作需要排队执行吗,影响性能。
二、锁的不同角度分类

- 锁监控
show status like 'innodb_row_lock%'二、锁的内部结构

- 锁所在的事务信息:指针,通过指针找到内存中关于该事务的更多信息,例如事务的Id;
- 索引信息:指针,对于行锁来说,需要记录一下加锁的记录属于哪个索引;
- 表锁/行锁信息:space id:记录所在表空间,page number:记录所在页号,n_bits:用比特位来区分哪一条记录加锁,在行锁结构的末尾放置了一堆比特位,这个代表使用了多少比特位;
- type_mode:32位的数,分成了lock_mode,lock_type,rec_lock_type三个部分

边栏推荐
猜你喜欢
随机推荐
分离轴定理SAT凸多边形精确碰撞检测
OC-NSString
每周推荐短视频:为什么产品开发需要数字化?如何做到数字化?
队列题目:无法吃午餐的学生数量
新产品立大功 伟世通第二季度营收双增
入门opencv,欢笑快乐每一天
张驰课堂:六西格玛培训工具——箱线图
【杂】pip换国内源教程及国内源地址
论文阅读 (64):Weakly-supervised Video Anomaly Detection with Robust Temporal Feature Magnitude Learning
封装class类一次性解决全屏问题
CollectionUtil:一个函数式风格的集合工具
图腾柱和推挽电路介绍
【云原生】如何快速部署Kubernetes
LeetCode 283. Shifting Zeros (Simple, Array)
FaceBook社媒营销高效转化技巧分享
View port number occupancy
About the SQL concat () function problem, how to splice
【暑期每日一题】洛谷 P1192 台阶问题
【机器学习】实验5布置:AAAI会议论文聚类分析
MySQL-FlinkCDC-Hudi实时入湖


![WebGPU 导入[2] - 核心概念与重要机制解读](/img/8f/195a3b04912d8872d025df58ab5960.png)







