一、简介
经常有面试官提出这么一个问题:什么是脏读、不可重复读和幻读?
关于这个问题,我们还得从数据库的管理系统说起,当数据库管理系统在写入或者更新数据的过程中,为了保证数据是正确可靠的,需要满足四个特性:原子性、一致性、隔离性和持久性,简称 ACID !
例如以银行转账为例,从原账户扣除金额,以及向目标账户添加金额,这两个阶段的操作,被视为一个完整的逻辑过程,不可拆分,简单的说,要么全部成功,要么全部失败!这个过程被称为一个事务,具有 ACID 四个特点!
说了这么多,跟我们今天要说的脏读、不可重复读和幻读有什么关系呢?
我们都知道,当下主流的数据库,都支持多个事务并发执行,当一个事务在写入数据,另一个事务也要读这条数据,会出现哪些问题?当一个事务在写入数据,另一个事务也要写入这条数据,又会发生什么哪些问题?
当多个事务并发处理同一条数据时,如果事务隔离性不合理,就会产生我们今天要介绍的内容,具体的说就是:脏读、不可重复读和幻读!
在事务的四个特性里面,其中隔离性总共分为四种级别:由低到高依次为 Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读等这几类问题。
不同的隔离级别,产生的结果是不一样,下面我们一起来具体分析分析!
二、场景分析
2.1脏读
所谓的脏读,指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会保存到数据库,也可能会回滚,不保存到数据库。当这个数据发生了回滚,就意味着这个数据不存在,这就是脏读!
脏读最大的问题就是可能会读到不存在的数据。比如在上图中,事务 B 的更新数据被事务 A 读取,但是事务 B 回滚了,更新数据全部还原。也就是说事务 A 刚刚读到的数据并没有存在于数据库中。
从结果上看,事务 A 读出了一条不存在的数据,这个问题比较很严重!
当数据库的事务隔离级别为读未提交,就会发生脏读现象!
2.2不可重复读

不可重复读,指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据出现不一致的情况。
比如上图,事务 A 两次读取同一数据,第一次读取结果为 1,当事务 B 修改了数据并提交,此时的事务 A 第二次读取结果为 2,两次读取结果不一致!
当数据库的事务隔离级别为读未提交、读提交时,就会发生不可重复读现象!
2.3幻读
幻读和不可重复读,有点类似,但是表达的侧重点不一样。
例如事务 A 对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。此时,突然事务 B 插入了一条数据并提交了,当事务 A 提交了修改数据操作之后,再次读取全部数据,结果发现还有一条数据未更新,给人感觉好像产生了幻觉一样。这就是幻读!
当有别的事务,在插入或者删除同一条数据的时候,就容易产生幻读的现象!
当数据库的事务隔离级别为读未提交、读提交、可重复读时,就会发生幻读现象!
三、如何解决
为了解决上述问题,数据库通过锁机制来解决并发访问的问题。
以 Mysql 为例,根据锁定对象不同,分为:行级锁和表级锁;根据并发事务锁定的关系上看,分为:共享锁定和独占锁定。
共享锁定会防止独占锁定,但允许其他的共享锁定;而独占锁定既防止共享锁定也能防止其他独占锁定;为了更改数据,数据库在进行更改的行上施加了行级独占锁定,insert、update、delete和selsct for update语句都会隐式采用必要的行锁定,当冲突加剧,会上升到表级锁定,此时会影响到其他表的访问操作。
直接使用锁机制管理是很复杂的,基于锁机制,数据库给用户提供了不同的事务隔离级别,只要设置了事务隔离级别,数据库就会分析事务中的 sql 语句然后自动选择合适的锁,可以依次有效的解决脏读、不可重复读和幻读问题!
整体的来说,事务的隔离级别和数据库并发性是成反比的,隔离级别越高,并发性越低。
四、小结
本位主要围绕什么是脏读、不可重复读和幻读,进行了简单的介绍,如果有些地方理解不到位,欢迎网友指出!
五、参考
1.程序员那点事 – 一文详解脏读、不可重复读、幻读
2.数据库事务隔离级别
坡折号和省略号有哪些做用?
1、表注释。 2、表意思转折或转换。 3、用于标明语意递进,破折号后面的比前面的递进一层。 4、用于标明因果关系,破折号后面的是原因。 5、表语言、语音中断、停顿和延长。 6、副标题前,表示对正标题的解释和补充作用。 7、用于总结上文。 1.用于行文中解释说明的部分。 2.用于话题突然转变。 3.用于声音延长的拟声词后面。 4.用于是项列举分承的各项之前省略号的主要用法是表示省略。 省略的内容主要有四:一是引文;二是重复性词语;三是类似语句;四是列举。 除省略外,省略号还有以下几种用法:1、 表示沉默:例:何为:梅伯母的身体已经经不起路上的颠簸了!欧阳平:……2、 表语言中断:例:穿长袍的问:这位是……我的兄弟。 戴礼帽的回答。 破折号也可表语言中断,但两者有不同:破折号表语言戛然而止,省略号表余音未尽。 3、表语言断断续续。 例:上级……派我……到这儿……工作,我没……有……完成……上级……交给我的……任务。 4、表含糊其辞,欲言又止例:我即刻胆怯了起来,便想全翻过先前的话来,那是……实在,……我说不清……。 其实,究竟有没有魂灵,我也说不清。 5、表明语意未尽。 例:可恶!然而……。 四叔说。 使用省略号时应注意以下问题:(1)不可滥用省略号。 一是省略号后语境不明的不能用省略号,而是没有上述特殊语意不能用省略号。 (2)、用了等、等等就不能再用省略号。 (省略号和等、等等有不同,省略号表示的可以是各种需要省略的,而后者只能是类似的词语或意思。 )(3)要正确处理省略号前后的点号问题:一是省略号前是个完整的句子的,省略号前应使用句末标点,表示省略的是句子;二是省略号前不是完整句子的,省略号前一般不用点号,表示省略的是词语、短语;三是省略号后一般不用标点。 (4)、如果省略的是一大段或几段文字,就用十二个圆点表示,单独成行,不顶格。
QQ工具书高中英语考前必背有多少词汇量
QQ工具书高中英语考前必背有的词汇量。 附:高中英语学习方法:一、积极参与课堂活动。 我们现在使用的高中英语教材是新教材,课文短小口语化,主题贴近现实生活,课文中设计了内容丰富并与主题相关的听、说、读、写等开放性的任务型活动和探究性学习的内容。 新教材重点强调学生动口动手,而不是死记单词和语法规则。 课堂上我们一定要听从老师的指挥,积极参与对话、讨论,发言,要敢于开口,不怕出错,珍惜课堂上的每一分钟,不放弃每一次用英语交流的机会;不会说的也要说。 要讲好英语就是要胆子大,脸皮厚。 英语是一门实践性很强的学科,只有大胆实践,才能提高交流能力。 我们要在听力、口语、阅读、写作四项技能上全面发展,听说领先。 高一年级在头2个月我们主要以训练听与说的能力为主,以后逐步加大阅读和书面表达训练。 二、英语学习要重视句子和文章的朗读背诵,以培养语感。 学英语记单词很重要,但机械记忆的单词量再大,也不会真正提高你的英语水平。 要做到词不离句,句不离文。 请记住:句子比单词重要,记句子比记单词划算。 我们要养成背句子的好习惯,因为句子中既包含了发音规则,又有语法内容,还有词的具体用法。 学过的课文要高声朗读,精彩段落和文章要读透背熟,做过的完形、阅读、单项选择题,听力录音稿也要朗读。 朗读也是提高口语的办法。 学英语语感很重要,而朗读、背诵,多听多说有助于培养语感。 通过大量的朗读背诵,我们的语感形成了,这时候我们的语音语调就更标准,常用句子就能脱口而出,说英语就更自信;在阅读文章时就能轻易地找到上下文关联的感觉,体会到英语文字的美。 三、英语学习要重视复习。 英语知识点多,需要大量记忆。 很多同学抱怨,说自己的记性差,记了又忘了。 有什么办法能让我们记得长久些,甚至终生不忘?有2个办法。 最好的办法以是听课文录音带。 反复地听,反复地读,课文中的语言点、词汇在录音带中不断被重复。 这跟我们提倡朗读是一个道理,声音对大脑的刺激有助于记忆。 记住:英语首先是一门声音,我们要多运用耳朵和嘴巴,要大量进行声音的输入与输出。 想学好英语复读机、录音机是比不可少的。 第二,经常复习。 要合理地安排复习时间。 首先要及时复习。 遗忘的规律是:前快后慢,先多后少,识记后最初遗忘得较快,以后逐渐减慢。 针对这一规律,学习新知识后应及早加以复习。 其次在复习中要多尝试回忆,背诵。 就是边读边回忆。 就像小学生背书一样,读一段,书合起来试着背,背不出来时再看一看。 尝试着回忆与识记交替进行,印象会更深刻一些,同时也知道了教材的难点在哪里,复习更有目的性。 四、 英语学习,跟任何知识的学习一样,以自学为主。 同学们要养成自觉学习的习惯。 语言学习不是老师讲会的,而是自己练会的。 我们的英语教学是精讲多练,讲练结合,以练为主。 有些同学听力不好,只有一个办法: 坚持听,每天5-10分钟,而且长期听,一定会有效果的;阅读能力要靠大量的阅读来提高,词汇量的积累和文化背景知识的丰富也是在阅读中完成的。 同学们要保证每天有2篇的阅读量,500字左右,3年要有36万字的阅读量。 有时不一定要做题,就像读中文杂志一样,只要你读的是英文就行。 我们要树立目标,自己给自己施压,自觉地复习和巩固所学内容,主动请教。 在完成了规定的任务后,要有“先人一步,捷足先登”的思想。 充分利用闲暇时间,弥补薄弱环节,加强优势。 半年后,一年后,你会发现你已远远走在其他同学前面了。 熟能生巧。 英语要靠我们不断地重复、模仿,才会熟练,只有熟练了,才会形成一种不假思索的技能。 在这个熟练的过程中,我们要不怕困难,坚持不懈地反复学习,持之以恒。 相信自己一定能学好英语。 成就梦想,英语助你一臂之力。
庐山的云雾千姿百态作者是用什么手法写的
【第一小节在文中的作用是总写变幻无常的云雾给庐山增添了几分神秘的色彩。 这是内容层面的,属于原生价值范畴,学生能够读懂。 “神秘”这个词语高度概括了庐山云雾的特点,“变幻无常,随手摸到,腾云驾雾、飘飘欲仙的感觉”,都突出了庐山云雾的神奇、神秘。 一个“更”字把庐山的云雾与其他的景物做了一个比较,庐山景色秀丽,高峰、幽谷、瀑布、溪流都很美,然而最特别的,还是那变幻无常的云雾,只有她她给庐山增添了几分神秘的色彩,让人有种腾云驾雾、飘飘欲仙的感觉。 带着这种感觉去读文,妙不可言,所以,教学时,要重点关注“神秘、更”这两个词语】【本小节有两个突出特点,一是总分的构段方式,二是比喻的修辞手法。 文章围绕“庐山的云雾千姿百态”这一中心句,根据云雾所处的位置和姿态,用“就像是……又像是……”、“是……又是……”的句式,分别把笼罩在山头的云雾、缠绕在半山的云雾、弥漫山谷的云雾和遮挡山峰的云雾比作“绒帽、玉带、大海、天幕”,巧妙的比喻,把庐山云雾的千姿百态的特点描写得栩栩如生,为孩子们插上了想象的翅膀,在品读文字的时候惊叹,哦,庐山的云雾竟然真是太奇妙了,太不可思议了。 所以,教学这一段,我们可以发掘以下几个教学价值点:1.掌握总分的构段方法。 这样的写法在第二课《美丽的南沙群岛》也有出现,这里再次出现,对于学生来说起到一个强化的效果,学生发现这种写法应该不难,重要的是懂得写景的文章可以用总分的写法,这样层次清楚,读起来一目了然,从而产生尝试的愿望。 三年级属于习作起步阶段,总分的构段方式是训练的重点,这里的教学为课后的仿写练习做了一个铺垫,所以,应作为训练的重点。 2.学习比喻的修辞手法。 学生平时所说的比喻句,往往并不一定是他的切身感受,这里的比喻,是根据云雾所处的位置、姿态展开想象,所以读起来生动形象,教学时要引导学生明白这一点。 】【这一段文字写出了庐山云雾瞬息万变的特点,在文章结构上同第二自然段,也是总分写法,也是用了几个比喻句。 “随风飘荡的一缕青烟,一泻千里的九天银河,四蹄生风的白马,北冰洋上的冰山”,文章省略了本体,然后用了“刚刚还是……转眼间就变成……明明是……还没等你完全看清楚,又变成……”的句式,为的是表现庐山云雾瞬息万变的特点,似乎等不及你眨眼睛,它就变了个模样。 总分写法,比喻句,学生通过跟第二自然段比较,应该也能够发现的,所以,这一段的教学,就可以采取半扶半放的方法,让学生自读自悟,然后交流,在交流中强化对庐山云雾瞬息万变的特点认识,避免学法的重复这样,两个总分段落,两段完全运用比喻的文字,把庐山云雾的神奇、千姿百态、瞬息万变的特点表现得淋漓尽致,让人仿佛置身庐山之中,飘飘欲仙,流连忘返。 学生通过朗读、想象、比较,体会庐山云雾的千姿百态,瞬息万变;这是内容层面的东西,属于教材本身传递的信息。 读完以后,我们重点还要了解、学习了文章表达的方法,这样,在学习完2、3小节之后,对课文的写作方法进行比较、总结,你发现这两小节在具体描写庐山云雾特点的时候,用了什么样的写法?想一想,庐山的云雾还有哪些变化,结合平时你在生活中或者在电视中看到的云雾的样子,展开丰富的想象,仿照3小节的形式,试着写话,也用上课文中的句式“刚刚还是……转眼间就变成……明明是……还没等你完全看清楚,又变成……”。 写话练习,是课文学习的一个延伸,也是对总分的构段方式及比喻修辞手法的消化吸收运用的过程。 】【最后一个自然段仅仅一句话,但是一个云遮雾罩再次照应前文似乎随手就能摸到,一个流连忘返,真切的写出了游人的感受,也应读出感情】
发表评论