范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

数据库篇mysql事务原理之MVCC视图锁

  前言数据库的事务特性数据并发读写时遇到的一致性问题mysql事务的隔离级别MVCC的实现原理锁和隔离级别1 数据库的事务特性原子性:同一个事务里的操作是一个不可分割的,里面的 sql 要么一起执行,要不执行,是原子性隔离性:数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的"独立"环境执行。这意味着事务处理过程中的中间状态对外部是不可见的一致性:在事务开始和完成时,数据约束都必须保持一致状态持久性:事务完成之后,它对于数据的修改是永久性的,即使出现系统崩溃也能够保持持久2 数据并发读写时遇到的一致性问题脏读(针对未提交)两个事务同时进行,事务A修改了数据D,且事务A未提交,而事务B却可以读取到未提交的数据D,称之为脏读脏写两个事务同时尝试去更新某一条数据记录时,当事务A更新时,事务A还没提交,事务B就也过来进行更新,覆盖了事务 A 提交的更新数据,这就是脏写。一般要加锁解决不可重复读(针对已提交的 update)针对的是已经提交的事务修改的值,同时进行的其他事务给读取到了,事务内多次查询,多次读到的是别的已经提交的事务修改过的值,这就导致不可重复读幻读(针对已提交的 insert)事务读取到事务开始之后的插入数据,例如select * from table_user where id between 1 and 10  ,这条sql本应查出 1~9 的数据,id=10 此时不存在,之后其他事务再插入了一条 id=10 的记录。然后当前事务再次查询则会查出 10 条记录。这就是幻读和不可重复读的区别是,不可重复读的问题是读取最新的修改,幻读是读取到最新的插入数据3 mysql事务的隔离级别读未提交(READ UNCOMITTED,RU):对应脏读,可以读取到最新未提交的修改读已提交(READ COMMITTED,RC):一个事务能读取另一个事务已经提交的修改。其避免了脏读,但仍然存在不可重复读和幻读问题可重复读(REPEATABLE READ,RR):同一个事务中多次读取相同的数据返回的结果是一样的。其避免了脏读和不可重复读问题,但幻读依然存在串行化读(SERIALIZABLE):事务串行执行。避免了以上所有的问题4 MVCC 的实现原理
  MVCC 全称Multi-Version Concurrency Control,其好处是读不加锁,读写不冲突,并发性能好MVCC 的 undo log 版本链InnoDB中每行数据都有隐藏列,隐藏列中包含了本行数据的事务ID trx_id、指向 undo log 的 roll_pointer 指针
  基于undo log的版本链:前面说到每行数据的隐藏列中包含了指向 undo log 的指针 roll_pointer,而每条undo log 也会指向更早版本的undo log,从而形成一条版本链
  readView
  对于使用READ COMMITTED  和REPEATABLE READ  隔离级别的事务来说,都必须保证读到已提交事务修改过的记录,也就是说假如另一个事务修改了记录但尚未提交,是不能读取最新版本的记录的,其核心问题:需要判断 MVCC 版本链中的哪个版本是当前事务可见的。innodb 的解决方案 readView,readView 包含4个比较重要的属性m_ids  :在生成ReadView  时,当前系统中活跃的读写事务 id 列表min_trx_id  :表示在生成ReadView  时,当前系统中活跃的读写事务中最小的事务id,也就是m_ids  中的最小值max_trx_id  :表示生成ReadView  时系统中应该分配给下一个事务的 id 值creator_trx_id  :对应生成该ReadView   事务的idreadView 的访问步骤如果被访问版本的trx_id  属性值与ReadView  中的creator_trx_id  值相同,表示当前事务在访问它自己修改过的记录,该版本可以被当前事务访问。如果被访问版本的trx_id  属性值小于ReadView  中的min_trx_id  值,表明生成该版本的事务在当前事务生成ReadView  前已经提交,所以该版本可以被当前事务访问。如果被访问版本的trx_id  属性值在ReadView  的min_trx_id  和max_trx_id  之间,那就需要判断一下trx_id  属性值是不是在m_ids  列表中,如果在,说明创建ReadView  时生成该版本的事务还是活跃的,该版本不可以被访问;如果不在,说明创建ReadView  时生成该版本的事务已经被提交,该版本可以被访问如果被访问版本的trx_id  属性值大于或等于ReadView  中的max_trx_id  值,表明生成该版本的事务在当前事务生成ReadView  后才开启,该版本不可被当前事务访问。反之可见如果某个版本的数据对当前事务不可见的话,那就顺着版本链找到下一个版本的数据(undo log)。如果最后一个版本都不可见的话,那么就意味着该条记录对该事务完全不可见读已提交和可重复读利用 ReadView 实现快照读:读取的是快照版本,也就是历史版本 readView 里的数据 ,普通的 SELECT 就是快照读当前读:读取的是最新版本,UPDATE、DELETE、INSERT、SELECT ... LOCK IN SHARE MODE、SELECT ... FOR UPDATE 是当前读,需要加锁READ UNCOMMITTED  :直接读取记录的最新版本就好READ COMMITTED  :每次读取数据前都生成一个ReadView针对当前读,RC 隔离级别保证对读取到的记录加锁 (记录锁),存在幻读现象REPEATABLE READ  :在第一次读取数据时生成一个ReadView针对当前读,RR 隔离级别保证对读取到的记录加锁 (记录锁),同时保证对读取的范围加锁,新的满足查询条件的记录不能够插入 (间隙锁),不存在幻读现象RR 从严格意义上并没解决幻读。如果事务一开始先 update 一条看不见的数据(前面没有当前读操作),再查询,则会多查出这条记录,此时也是发生了幻读5 锁和隔离级别RC、RR、SERIALIZABLE 级别的隔离,当前读都会需要借助锁实现MVCC 能实现多数情况避免幻读,但不能完全避免幻读的发生RR 隔离级别需要先 select ... for update 加锁进行当前读操作,才能防止幻读对于SERIALIZABLE  隔离级别的事务来说,InnoDB  规定使用加锁的方式来访问记录欢迎指正文中错误参考文章Mysql加锁过程详解探索Mysql锁机制(二)深入学习MySQL事务:ACID特性的实现原理MySQL事务隔离级别的实现原理
  本文作者  :  潜行前行
  本文链接  :  https://www.cnblogs.com/cscw/p/16106338.html

GaN黑科技更亲民高性价比ORICO65W氮化镓3口充电器半年前就体验过一款氮化镓充电器,无论是用在苹果手机安卓手机笔记本电脑等设备续航都是非常棒的体验,氮化镓的出现,让我无论是出门还是办公都会选择它,甚至已经抛弃了原厂的充电头。对于没有河水漫堤有多危险首先我们来看看导致河水漫堤的原因有哪些1。上游发生超标准洪水,洪水位超过堤顶2。河道内存在有阻水障碍物,水位雍高超过堤顶3。因河道淤积,水位抬高超过堤顶4。风浪或主流坐弯,引起水位创新技术推动智云发展!全新稳定器产品圈粉专业用户智云作为引领全球手持稳定器发展的头部品牌,推出的每一款稳定器都深受创作者的喜爱。除了稳定器设计功能上的用心之外,也致力于将专业拍摄玩法功能集成到云台中。作为一个成立6年的国产品牌,微软windows11来了,带你提前体验微软之前在6月正式公布了Windows11,而且也已经像WindowsInsider会员开放了测试版系统的推送。当然按照正常情况来看,用户可以成为WindowsInsider会员去给她腰腹的贴心呵护酷轻松石墨烯发热能理疗护腰带作为一名上班族,每天工作一坐就是8小时以上,尤其是入秋以来,加之寒气入体,感觉腰部酸痛感越来越重,到了三十多岁养生也重视起来,身体保养必须安排上,一定要先从保暖做起。今天我要来体验有娃一族常备凡米耳温计解决宝宝测温难题自从有了宝宝之后,每当在换季的时候,就很担心他会发烧感冒,如果宝宝生病了全家都遭罪。再加上这一年来的疫情反弹,不管去哪里都要测体温,现在出门时都会注意一下身体健康情况。所以在家中除手抖是什么原因呢?少喝点谢邀!首先提醒有不明原因手抖动的朋友应到正规医疗机构看医生。中医讲究望闻问切四诊,先辨阴阳再辨寒热虚实表里,既八纲辨症,再参照子午流注与卫气营血进一步验症分析,最后做出症诊。苹果耳机平替品FitPods主动降噪耳机上手体验前言之前笔者用过一款高仿的苹果AirPodsPro蓝牙耳机,除了外观一模一样外,那音质和降噪功能真的不能比。平时也体验过很多国产的品牌耳机,其实都是不错的,真没必要去为了面子去选择三大学科跻身全英前五,教学质量全英第三,威尔士中国学生仅占1在最近发布的泰晤士和星期日泰晤士报2022优秀大学指南排名中,位于威尔士的亚伯大学上升7个名次,跻身英国Top40大学,综合排名第38位。三大学科跻身全英前5农业与林业全英第3凯尔斯瑞奇医疗联合HTT推出OKGEL吉无痕祛疤凝胶皮肤作为人体最大器官,占整个体重的15,更是有很多部分直接呈现在他人视线之中。日常生活里,皮肤难免会受伤,身体会自发地形成疤痕组织,以防止伤口感染疼痛和脱水并迅速修补受伤的皮肤,但年度红光奖在深揭晓,奏响激光技术最强音当中国工程院院士红光奖中国激光行业创新贡献奖专家评审组组长范滇元和深圳市政协常委经济委主任贾兴东将2021年度激光行业影响力企业奖颁发给锐科激光宏山激光百超迪能领奖代表手中时,会场
华为申请姚安娜商标获批!任正非曾说为防止恶意抢注,第一次公权私用,向全体员工道歉每经编辑李泽东据中国商标网官网消息,近日,华为申请姚安娜商标获批,注册公告日期为2021年10月21日,商标专用权期限为2021年10月21日至2031年10月20日。华为此次申请2021年手机发热排名小米超神,华为排名第八,苹果王牌落选你今年有没有换新的安卓旗舰?最大的感受是不是手机发热发烫比较严重?这个现象其实很普遍,这主要是因为骁龙888处理器和骁龙88Plus处理器均采用的是三星五纳米工艺制程,整个处理器的国药与华为战略合作,涉医药新零售智能制造和数字化转型等澎湃财讯11月4日,国药控投华为战略合作签约仪式在上海国药控股大厦举行。根据协议,双方在打造医药新零售智能制造和数字化转型等开展深度战略合作,助力健康中国战略实现,更好地满足基层百华为的研发费用比率22。7,为什么高出苹果小米那么多?你真的信这研究费?就一没有上市民营公司,研究费用随他喊,无非就是想树立自己是科技技术牛逼。不过话又说回来花这么多钱研究了什么东西出来?4G手机吗?这玩意不是靠随口喊研究费,是看疗效手机的脸部解锁,有给你带来什么不好的体验?感谢您的阅读!实际上在苹果采用FaceID之前。其实有些手机厂商已经采用2D人脸解锁,这种解锁速度非常的快,但同样也有自己的缺点,因为它可能会让一些用户在解锁快的同时,受到一些人通五笔打字还有人用吗?是不是用五笔的人都老了?用五笔打字的当然有,我就是一个,我多年来一直用五笔打字,用五笔的是不是都老了,哪就不知道,但我是老了,古稀之年今年75岁。九十年代电脑当时流行的输入法就是五笔,当时我已经55岁样子老人躺在医院该怎么为他选配助听器?既然在医院,自然是到专科在专科医生指导下选配了。你好助听器需要根据听损程度来选配。如果老人不方便,你可以咨询就近的听力机构或者助听器验配中心,问其是否度能提供上门服务。现在很多助听助听器损坏,主要会有哪些原因?您好造成助听器损坏的原因有耳垢的堵塞这就需要患者要保持耳道内的卫生清洁做好助听器的清洁保养其次就是助听器怕受潮平时注意防水防潮因为受潮后助听器的零件和芯片容易受腐蚀还有就是怕摔冲击本人教师想买个家用打印机,预算10002000,能复印,能打印,能彩印,有什么推荐嘛,谢谢各位?本人从事电脑打印机销售从业十余年,自我感觉对打印机,尤其是家用打印机有一定认识,我来说一说吧。首先根据你的用途,需要一台可以打印复印彩色文件的机器,符合此要求的打印机有两种彩色喷墨电脑里有很多文件,很乱但是都有用,有什么管理软件值得推荐?这个问题相信是很多人会碰到的,我以前也经常出现东西明明在电脑上,但死活找不到的问题有时东西就在桌面上,但由于桌面的图标太多太杂,导致花了不必要的时间去寻找。要解决这些问题,除了找软女孩上初一,目前成绩班级前三,能不能给她买手机让她玩游戏?最好不要买。听过这么一句话,要想毁了一个孩子,就给他一部手机。义务教育阶段的学生来说,自制力相对较差,很容易被手机强大的手机游戏功能所吸引,沉迷游戏无法自拔也会对手机一些新奇刺激的