首页 > 其他分享 >2022-09-18-事务机制与锁

2022-09-18-事务机制与锁

时间:2022-10-03 00:22:51浏览次数:76  
标签:事务 提交 重复 18 09 链表 video 2022 数据

事务机制与锁

事务ACID特性(4大特性):原子性;一致性;隔离性;持久性。
image
事务隔离性(四大隔离级别):读未提交;读已提交;可重复读;串行。
image

脏读:读到了别的事务还没有提交,可能随时会被回滚掉的,有可能不存在的数据,这叫做脏读。

可重复读:我第一次查到的数据,我之后在我这个事务里面再次重复查的话,它永远是你第一次查出来的结果,这叫做可重复读。
后面查的所有的数据,都是你执行第一条sql查询语句当时那一刻的数据,任何其他记录的查询都是这样子,不光第一次执行的sql查询的一条记录,其他也是可重复读的,它读的是我们当时查第一条sql语句它当时的那个值。

间隙锁结合可重复读,可以解决幻读问题。
image

串行化:默认情况下,其他三种情况,读不加锁;但串行化,读和写都会进行加锁。所以没有并发问题,但效率低。
串行化底层实现机制:每一条sql语句都会加锁,操作相同数据,都要拿到同一把锁。
串行化案例:
事务1,执行查询操作,先不提交。
image
事务2,执行update操作,一直在等待,未结束。当事务1,提交后,事务2,才顺序继续执行,运行结束。
image

事务1与事务2反过来,同样如此:
image

读未提交+读锁=串行化:
image

默认隔离级别:
image
MVCC机制:
image

NACOS核心架构图:(核心:读写分离)
image
脏数据(半数据)≠ 旧数据

RR级别(小公司,并发量低,采用数据用于制作报表):可重复读;查我们的历史的版本链;是找之前版本,我第一次查询的 那条 已提交的数据。
RC级别(互联网的大公司,并发高,采用该级别):读已提交;每次都是在版本链里边,找最新的这条数据,已经提交的数据。

MVCC原理详解:
image

image

image

image

阿里一面面试题:查询操作需要加事务吗?
image

image

数据库SQL涉及必知必会锁相关:
image

image

SQL优化及阿里索引规则相关:
image

Explain:
image

长事务的影响及长事务的优化:
image

MySQL执行过程与BufferPool缓存机制(不需要详细了解):
image

image

超高并发mysql事务优化|bufferpool内存结构及innodb页结构详解
通过free链表很方便的对空白页进行管理。对于链表来说,删除的性能本来就很快。当bufferPool中某一页空出来了,则把对应的页添加到free链表里边去。被占用则会被从链表里删除。
image

通过flush链表很方便的对脏页进行管理。每一页对应一个控制块。对于update更新等写操作,先从bufferPool找到对应的页,进行更新操作。标记为脏页,更新该页地址节点到flush链表中去,后台有新的线程定时的负责持久化到磁盘。
image

lru链表
image

满的时候,先淘汰冷数据区域的。
image

当超过1s存在再次访问控制块,则将其从冷数据区域转移到热数据区域。
image

free链表和flush链表详述
image

LRU链表及升级优化版本的LRU链表详述
image

redo-log

参考视频资料学习整理:
2022年小破站讲的最好的MySQL事务优化&阿里内部锁机制最佳实践
https://www.bilibili.com/video/BV1e14y1x7Sg?p=1
同完全重复https://www.bilibili.com/video/BV1434y1J7LK?p=1
同一样完全重复https://www.bilibili.com/video/BV1qD4y167VF
以及一样重复https://www.bilibili.com/video/BV1bg411U71t?p=1

我翻遍了整个B站,这是我见过最好的MySQL事务原理与锁机制教程
https://www.bilibili.com/video/BV1rT41177hG?p=1

标签:事务,提交,重复,18,09,链表,video,2022,数据
From: https://www.cnblogs.com/YiMingXiaoBuYiMengXiaoNai/p/TheBasicOfTransactionAndLockOnMySQL.ht

相关文章

  • lc1818. 绝对差值和
    1818.绝对差值和-力扣(LeetCode)官方题解 绝对差值和-绝对差值和-力扣(LeetCode)  wa的思路:1、找绝对值差最大的位置maxi然后取nums2[maxi]的值去有序的nums1......
  • NewStarCTF2022
    Re艾克体悟题方法1.frida练习一下//a.jsJava.perform(function(){letFlagActivity=Java.use("com.droidlearn.activity_travel.FlagActivity");FlagAc......
  • English words chapter 20220927
    作者:​DATA_MONK​​​......
  • 2022-2023-1 20221312 《计算机基础与程序设计》第五周学习总结
    作业信息班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学......
  • 18_非单文件组件
    1.基本使用<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>基本使用</title><scripttype="text/javascript"src="../j......
  • 1109 擅长C——20分
    当你被面试官要求用C写一个“HelloWorld”时,有本事像下图显示的那样写一个出来吗?输入格式:输入首先给出26个英文大写字母A-Z,每个字母用一个7×5的、由C和.组......
  • 2022-2023-1 计算机基础与程序设计 第5周学习总结
    2022-2023-120221424《计算机基础与程序设计》第5周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪......
  • 2022-09-30 mysql列存储引擎-去除TempTableForSubquery引发的memcopy的策略
    摘要:在做子查询时, TempTableForSubquery引发大量的memcpy。本文记录消除memcpy的优化的策略。逻辑追踪:火焰图: memcpy追踪:(gdb)bt#0stonedb::core::Filter::Block:......
  • 2022-09-27 计划记录
    摘要:由于最近情况突变,需要重新设定计划.严重等级设置为当前最高等级。内容计划调整:一.保证对mysql内核理解在思想上的融合化需要大段的深入思考的时间需要投入巨大的......
  • 面试题 01.09. 字符串轮转(拼接)
    面试题01.09.字符串轮转(拼接)方法1就是二重循环暴力,为了节省空间可以利用取模的思想。时间复杂度:方法2就是用两倍,然后find是否为其子串即可。时间复杂度:......