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

MySQL事务的12连问,你顶得了嘛

  1. 什么是数据库事务?
  事务,由一个 有限的数据库操作序列 构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
  假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100 元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要  事务  ,将A的钱回滚回去,就是这么简单。  2. 事务的四大特性
  原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部都执行,要么都不执行。 一致性:指在事务开始之前和事务结束以后,数据不会被破坏,假如A账户给B账户转10块钱,不管成功与否,A和B的总金额是不变的。 隔离性:多个事务并发访问时,事务之间是相互隔离的,一个事务不应该被其他事务干扰,多个并发事务之间要相互隔离。 持久性:表示事务完成提交后,该事务对数据库所作的操作更改,将持久地保存在数据库之中。 3. 事务的隔离级别有哪些?MySQL的默认隔离级别是什么?
  事务的隔离级别有四种,分别是:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)、串行化(Serializable)。 读未提交隔离级别 :只限制了两个数据不能同时修改,但是修改数据的时候,即使事务未提交,都是可以被别的事务读取到的,这级别的事务隔离有脏读、重复读、幻读的问题;读已提交隔离级别 :当前事务只能读取到其他事务提交的数据,所以这种事务的隔离级别解决了脏读问题,但还是会存在重复读、幻读问题;可重复读:  可重复读隔离级别,限制了读取数据的时候,不可以进行修改,所以解决了重复读的问题,但是读取范围数据的时候,是可以插入数据,所以还会存在幻读问题;串行化:  事务最高的隔离级别,在该级别下,所有事务都是进行串行化顺序执行的。可以避免脏读、不可重复读与幻读所有并发问题。但是这种事务隔离级别下,事务执行很耗性能。
  Mysql默认的事务隔离级别是 可重复读 (RR)。 4. Mysql为什么选择RR作为默认隔离级别?
  我们知道Mysql有四种数据库隔离级别,分别是 读未提交、读已提交、可重复读、串行化 。而读未提交隔离级别太低了, 会有脏读问题 ,串行化隔离级别太高了, 会影响并发读 。那么就剩下读已提交(RC)和可重复读(RR)了。
  那么, Mysql为什么会选择RR作为默认隔离级别呢?
  我们的MySQL数据库一般都是集群部署的,会有主库、从库。主库负责写,从库负责读。主库写入之后,会进行主从复制,把数据同步到从库。
  从库是在主库拿到bin log日志,并执行bin log,从而保证从库与主库的数据一致性。
  实际上, bin log 有三种格式,分别是statement,row和mixed 。如果是statement 格式,bin log 记录的是SQL 的原文。Mysql早些时候,bin log 日志格式只有statement 这种,在RC的隔离级别,可能出现数据不一致的问题。
  MySQL官网上还记录了这个bug。
  我们可以复现这个bug,假设有表结构如下:    CREATE TABLE t (       a int(11) DEFAULT NULL,       b int(11) DEFAULT NULL,       KEY a (a)     ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  插入两条数据 insert into t values(666,2),(233,1);
  执行以下这两个事务:
  执行完之后,因为事务的隔离级别是 RC ,所以事务A在更新时,会对 b=2 加行级锁,所以执行结果为(888,2) ,事务B在执行时,不受行级锁的影响,两条数据变为(888,2),(233,2) 。
  在RC隔离级别下,我们再来看下 bin log 日志。当两个事务执行完后,会先记录事务B的bin log 日志,因为它最先提交,然后才生成事务A的bin log 日志。当bin log 日志格式是statement ,binlog记录的就是原文,也就是先记录update t set b=2 where b = 1; ,然后才记录update t set a=888 where b=2 。
  酱紫的话,当主库把 binlog 同步到从库,执行SQL 回放后,数据库中的数据就变成了(888,2)和(888,2) ,主数据库和从数据库数据不一致啦。而在RR(可重复读的数据库隔离级别) 下,因为会有间隙锁的存在,这种情况就不会发生,因此,Mysql默认选择RR 作为隔离级别。5. 很多大厂为什么选择RC数据库隔离级别?
  互联网大厂和一些传统企业,最明显的特点就是高并发。那么大厂就 更倾向提高系统的并发读 。
  RC 隔离级别,并发度是会比RR 更好的,为什么呢?
  因为RC隔离级别,加锁过程中,只需要对修改的记录加行锁。而RR隔离级别,还需要加 Gap Lock 和Next-Key Lock ,即RR隔离级别下,出现死锁的概率大很多。并且,RC 还支持半一致读 ,可以大大的减少了更新语句时行锁的冲突;如果对于不满足更新条件的记录,就可以提前释放锁,提升并发度。一致性读:又称为快照读。快照即当前行数据之前的历史版本。快照读就是使用快照信息显示基于某个时间点的查询结果,而不考虑与此同时运行的其他事务所执行的更改。
  当前读: 当前读的规则,就是要能读到所有已经提交的记录的最新值。
  半一致性读:一条update语句,如果 where 条件匹配到的记录已经加锁,那么InnoDB会返回记录最近提交的版本,由MySQL上层判断此是否需要真的加锁。  6. 并发场景,数据库存在哪些一致性问题?脏读:如果一个事务读取到了另一个未提交事务修改过的数据,我们就称发生了脏读现象。 不可重复读:同一个事务内,前后多次读取,读取到的数据内容不一致 幻读:如果一个事务先根据某些搜索条件查询出一些记录,在该事务未提交时,另一个事务写入了一些符合那些搜索条件的记录(如insert、delete、update),就意味着发生了幻读。 丢失更新:事务A和事务B都对同一个数据进行修改,事务A先修改,事务B随后修改,事务B的修改覆盖了事务A的修改。 7. 四大隔离级别,都会存在哪些并发问题呢?
  隔离级别脏读不可重复读幻读  读未提交(RU)  读已提交(RC)   可重复读(RR)  串行化(Serializable)   在RU隔离级别下,可能发生脏读、不可重复读、幻读现象。 在RC隔离级别下,可能发生不可重复读、幻读现象。 在RR隔离级别下,可能发生幻读现象。 在Serializable隔离级别,会强制事务串行执行, 不会 存在脏读、不可重复读、幻读现象。8. MySQL的隔离级别是如何实现的?
  MySQL的隔离级别是通过MVCC和锁机制来实现的。 RU隔离级别最低,没有加锁,存在脏读问题。事务读不加锁,不阻塞其他事务的读和写 RC和RR隔离级别可以通过 MVCC 来实现。串行化是通过 锁机制 实现。读加共享锁,写加排他锁,读写互斥。如果有未提交的事务正在修改某些行,所有select这些行的语句都会阻塞。9. 什么是MVCC,它的底层原理?
  MVCC ,即Multi-Version Concurrency Control (多版本并发控制)。它是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问.
  通俗的讲,数据库中同时存在多个版本的数据,并不是整个数据库的多个版本,而是某一条记录的多个版本同时存在,在某个事务对其进行操作的时候,需要查看这一条记录的隐藏列事务版本id,对比事务id并根据事物隔离级别去判断读取哪个版本的数据。
  要了解MVCC的底层原理,需要回顾很多相关知识点,我们按以下小提纲,来分析哈: 什么是快照读和当前读 隐式字段 什么是Undo Log 什么是快照版本链 事务版本号 什么是Read View 查询一条记录,基于MVCC,是怎样流程 基于MVCC,RC隔离级别,存在不可重复读问题的分析 9.1 什么是快照读和当前读快照读:读取的是记录数据的可见版本(有旧的版本)。不加锁,普通的select语句都是快照读。 当前读:读取的是记录数据的最新版本,显式加锁的都是当前读。
  快照读 是MVCC实现的基础。 9.2 隐式字段
  对于 InnoDB 存储引擎,每一行记录都有两个隐藏列trx_id、roll_pointer ,如果表中没有主键和非NULL唯一键时,则还会有第三个隐藏的主键列row_id 。9.3 什么是Undo Log
  undo log,回滚日志,用于记录数据被修改前的信息。在表记录修改之前,会先把数据拷贝到undo log里,如果事务回滚,即可以通过undo log来还原数据。
  可以这样认为,当 delete 一条记录时,undo log 中会记录一条对应的insert 记录,当update 一条记录时,它记录一条对应相反的update 记录。
  undo log 有什么用途呢?事务回滚时,保证原子性和一致性。 用于MVCC快照读。 9.4 快照版本链
  多个事务并行操作某一行数据时,不同事务对该行数据的修改会产生多个版本,然后通过回滚指针(roll_pointer),连成一个链表,这个链表就称为版本链。如下:
  9.5 事务版本号
  事务每次开启前,都会从数据库获得一个自增长的事务ID,可以从事务ID( trx_id )判断事务的执行先后顺序。这就是事务版本号。9.6 什么是Read View
  Read View是什么呢?它就是事务执行SQL语句时,产生的读视图。实际上在innodb中,每个SQL语句执行前都会得到一个 Read View 。它主要是用来做可见性判断的,即判断当前事务可见哪个版本的数据~
  在 Read View 中,有这几个重要的属性。m_ids:当前系统中,那些未提交的读写事务ID列表。 min_limit_id:表示在生成Read View时,当前系统中活跃的读写事务中最小的事务id,即m_ids中的最小值。 max_limit_id:表示生成Read View时,系统中应该分配给下一个事务的id值。 creator_trx_id: 创建当前Read View的事务ID
  Read view 匹配条件规则(很重要)如下: 如果数据事务ID  trx_id < min_limit_id ,表明生成该版本的事务在生成Read View前,已经提交(因为事务ID是递增的),所以该版本可以被当前事务访问。如果 trx_id>= max_limit_id ,表明生成该版本的事务在生成Read View后才生成,所以该版本不可以被当前事务访问。如果  min_limit_id =
威世顿PROX10评测千元单动铁耳机内卷,成本最高线材加持关于定制耳机和动铁耳机很多新人会把它定义为专业高端,从工业设计生产和市场需求上,动铁单元应用和定制耳机从无到有,早期颇有物以稀为贵的产能溢价。本文会以基础的单动铁评测尝试做一次科普数据帝NBA一夜创16项纪录库里复制哈登昔日壮举北京时间11月10日,NBA常规赛继续进行,昨日一共有7场比赛,球员数据集体井喷,库里拿到NBA赛季首个50分约基奇威少和三球分别拿到三双德罗赞突破18000分里程碑德拉蒙德抢下2熊孩子为什么熊?家长们该好好反思一下有种孩子叫做熊孩子,这类孩子往往令家长头疼,某些做法让家长们不知所措。熊孩子本指会调皮捣蛋做事不按常规出牌但本性是善良的孩子。但其实最近几年里,熊孩子成了一个贬义词,泛指那些令人讨为母乳喂养做好准备为母乳喂养做好准备如果你已经决定要用自己的乳汁喂养宝宝,那么为了能让母乳喂养顺利开始,从怀孕开始你就应为产后母乳喂养做好各方面的准备。这就要求孕妈妈不仅要有足够的关于哺乳的知识经验分娩之后能不能立刻晒娃?老辈人讲究瞒生,背后或有好处女人生孩子是家族大事儿,一般在准备怀孕三个月会出现瞒孕之说,目的是直到胎像牢固以后再宣布,以防终成空一场。却不知道,目前仍有很多老人坚持瞒生,孩子出生后都不认为在第一时间道喜,至少立冬后以下材质保暖衣慎买,既花冤枉钱对孩子也有害,别盲目跟风文文儿前几天,北方气温骤降。在立冬的当天,北方的很多城市也迎来了初雪。预示着冬天真的来了。对北方城市来说,冬天也是真的冷,各种保暖装备该上阵了。棉衣棉裤,保暖衣,保暖鞋袜都是必可少入冬后多给孩子吃8种食物,对眼睛好,营养丰富,人人吃得起2021年的冬季已经悄然而至,不知不觉天气凉了,孩子们户外活动的时间减少,每天无论是在学校上课,还是回到家里看书看电视玩手机等,都要长时间用眼睛,用眼过度容易造成疲劳,所以除了让孩立冬之后这肉要多吃,炖一炖滋补又营养,对身体好处多,太香了立冬之后这肉要多吃,炖一炖滋补又营养,对身体好处多,太香了立冬之后,就是冬天了,往年在初冬的季节还是很暖和的,今年一股强冷空气的来临,使得气温直降。作为北方人,天气变冷以后,为了身宝宝学走路摔成脑损伤,教你一招让孩子少摔跤原创孕事摘要一定要确保孩子安全学步啊!超模主持人李艾曾经说过一句话让孕事妈很有共鸣一个孩子能平安健康的成长,一定是需要人全心全意的照顾着,否则,都不可能活过婴儿期。短短几句话,道尽5惊人成就使莱昂内尔梅西成为2021金球奖的热门人选莱昂内尔梅西(LionelMessi)今年能否再次赢得金球奖?莱昂内尔梅西被广泛认为是今年赢得金球奖的热门人选。这将是巴黎圣日耳曼前锋第七次赢得金球奖。与往年不同的是,事实证明,在冠中冠16人名单出炉,艾伦退赛丁俊晖候补入选,网友众星云集2021斯诺克英格兰公开赛落下帷幕,75三杰和80五虎的较量让球迷大呼过瘾,最终决赛中希金斯在一度86获得赛点的情况下,被有着墨尔本机器之称的尼尔罗伯逊连追3局,最终98逆转绝杀!
秋韵北宫国家森林公园数千亩彩叶林披上盛装央广网北京10月20日消息(记者朱冠安)一年好景君须记,最是橙黄橘绿时。北京的秋像一把神奇的笔刷掠过双眼,山河顿时变得绚丽多彩。距北京市中心约20公里的北宫国家森林公园,数千亩彩叶满足看彩林日出星空露营遛娃多重需求的宝地,成都2。5h刹拢总有宝子在后台问三三连续跑几个景点太累了,有没有那种可以看到最近超火的彩林,还能露营看星空看山水最好还带有浓厚的人文色彩的旅游地?作为宠粉无极限的三三,对宝子们的这些要求,咱当然会天眼早新闻10月20日头条这是一件处处彰显感恩,处处弥漫幸福的特殊礼物!许蕾代表带着它来到北京许蕾代表带到北京的特殊的礼物化屋新貌,这幅村民们一针一线绣出来的苗绣,把整个化屋村一派热热闹闹欣欣向荣的景象给自己和父母更好地守护健康,didoF50SPro智能手环评测这些年来,智能手环一直倍受消费者青睐,其功能也在不断地增加。不过目前市面上绝大多数的智能手环的功能都是大同小异,在监测这方面,无非就是心率睡眠步数等,最多再包含血氧。但笔者要体验的地处中俄蒙三国交界,被誉为东亚之窗,它的名字叫满洲里内蒙古幅员辽阔,呼伦贝尔是近年来内蒙古旅游的热门之地。内蒙古呼伦贝尔草原是世界四大草原之一,被誉为世界上最好的草原,然而,除了欣赏壮丽的草原风光外,边境旅游对于来呼伦贝尔旅游的游客抗老只知维A醇?三大抗老巨头教你怎么选,内附代表产品讲解抗老要趁早这个概念,00后的妹子们都喊得火热,早就深入人心了,但市面上大火的抗老单品大多主打维A醇,这就是国货护肤的通病,哪个成分火了就一起扎堆出哪个,真是无力吐槽。而大家熟知的热央视曝光夺命保温杯,倒出来的热水都是毒水,父母要警惕现在已经进入秋季,保温杯似乎也有了很好的用处,尤其是对于孩子而言,上学或者是外出玩的时候,父母都会给其带上保温杯,就是希望孩子可以喝到一口温热的水,避免出现腹痛的情况。但是如今的保提示红光满面并不一定代表气色好,还可能与4种疾病有关在我们平时的生活中,红光满面向来就被看作是气色好以及身体健康的标志,在很多人的潜意识当中,总是认为面色好,身体才能健康。但大家不知道的是,如果脸上的红光长时间不消退,那么就很有可能起床睡觉铃声设置对了没?健康成长养生长寿至关重要好习惯从起床睡觉开始健康作息时间基准日晷时间早睡早起身体好,几点起床?几点睡觉?几乎所有专家都建议晚上10点前要睡觉,这个时间是啥时间呢,北京时间东京时间纽约时间还是伦敦时间?日晷建议女人多了解子宫最喜欢的5种蔬菜,常吃身体好,气色好建议女人多了解子宫最喜欢的5种蔬菜,常吃身体好,气色好有些女人明明很年轻,看着却很显老,有些女人年龄很大,看着却很年轻。那都是气色的原因!对于女性朋友来说,其实子宫就是身体非常重要想让试管移植成功率翻倍?不妨试试这六招!做试管很像打怪升级,每个阶段都有一个大boss镇守,需要你和医护团队紧密配合,才能攻坚。眼看已经到了最后关头,boss已经残血,只要完成了胚胎着床,验孕成功,你就可以初步体会为人父见红不住院,差点害死宝宝!医生再耽误1分钟,大人小孩都危险原创孕事怀胎十月,每个妈妈都要牢记安全第一!身体不舒服要重视,胎动减少要就医,见红破水更应重视。忽视身体发出的信号,就像埋下一颗定时炸弹随时会爆炸!10月11日,湖南一名孕晚期的妈女篮主力李梦回国坐经济舱令人心疼!球迷嫁给郭艾伦就能享福了虽然中国女篮没有能够在世界杯决赛上战胜美国,但是女篮姑娘们依旧是我们心目中的冠军,很多人都十分敬佩女篮姑娘们的实力与努力。近期,中国女篮第二批球员已经坐飞机返回国内,我们看到这次女结石是吃出来的吗?医生不想结石变大,这6种饮食或要注意说到结石的问题,相信大家并不陌生,人体或动物体内导管腔中或腔型器官,比如肾脏,输尿管,胆囊或者膀胱等内部存在的固体块状物就被称之为结石。结石是临床上常见的病症,包括肾结石胃结石牙结按图索冀诗画田园绘丰景打卡薰衣草花海采摘品尝鲜水果在刚刚过去的周末游客在张家口市宣化区窑子头村田园综合体度过了充实愉悦的一天近年来当地在推进河滩地等低产田改造中按照企业合作社农户模式打造田园综合体当地村踏秋赏景醉美郴州10月20日,桂阳县扶苍山巨石奇特,秋色如画,吸引游客前来踏秋赏景。扶苍山位于桂阳县西北处,海拔在1300米以上,山上怪石嶙峋,形态各异,惊险万分,巨石屹立于悬崖峭壁之上,似孝子辞从事风俗业的泰国人妖,光鲜亮丽的背后,他们的生活到底有多惨?如果您喜欢这篇文章,请点击右上方的关注。感谢您的支持和鼓励,希望能给您带来舒适的阅读体验。泰国红灯区,夜幕降临,一群浓妆艳抹的人妖正在街上打量着来往的游客。一旦看到潜在客户,就会一秋冬季节,气管炎患者应该要注意些什么?马上就要步入冬天了,尤其这个季节是气管炎呼吸道疾病的高发季节,特别是老年和儿童是高发人群,那么应该都需要注意些什么呢,就从以下几点要特别注意首先要知道为什么气管炎会在冬天多发,这就年轻人该如何预防脱发?现在的年轻人随着生活节奏的加快,脱发现象已经成为普遍存在的。对于大部分年轻人来说的话长期紧张熬夜引起的睡眠不足压力过大内分泌失调等让年轻人恐惧,对于脱发而感到焦虑,对此,该如何预防民间有一句俗语叫冬吃萝卜夏吃姜,为什么会这么说呢?萝卜中的B族维生素和钾镁等矿物质,以及芥子油可促进肠胃蠕动,有助于体内废物的排除增强机体免疫功能。萝卜中的淀粉酶能分解食物中的淀粉脂肪使之得到充分的吸收。白萝卜(此处已添加书籍卡片如何防止银屑病复发?那就是赶紧收好这份护理攻略指南秋季到来,随着气温的降低,人的皮肤也渐渐变得干燥起来,对于银屑病患者来说,这并不是一件好事。在这个季节,若没有合理的护理,银屑病很容易再次复发。特别是在秋冬干燥的季节,皮肤瘙痒加重面色差,失眠,头晕目眩,血虚问题,离不开这四味中药你是不是经常面色无华,起身突然头晕目眩,总是手脚冰凉四肢不温,姨妈总是时间不准,出现这些问题,总觉得血虚。什么当归红枣,红糖红枣,桂圆鸡蛋一系列道听途说的补血方法用了,效果差不说还