游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

SQLSERVER的四个事务隔离级别到底怎么理解?

  一:背景1。讲故事
  在有关SQLSERVER的各种参考资料中,经常会看到如下四种事务隔离级别。READUNCOMMITTEDREADCOMMITTEDSERIALIZABLEREPEATABLEREAD
  随之而来的是大量的文字解释,还会附带各种脏读,幻读,不可重复读常常会把初学者弄得晕头转向,其实事务的本质就是隔离,落地就需要锁机制,理解这四种隔离方式的花式加锁,应该就可以入门了,那如何可视化的观察锁过程呢?这里借助SQLProfile工具。二:四种事务隔离方式1。测试数据准备
  还是用上一篇创建的post表,脚本如下:CREATETABLEpost(idINTIDENTITY,contentchar(4000))GOINSERTINTOdbo。postVALUES(aaa)INSERTINTOdbo。postVALUES(bbb)INSERTINTOdbo。postVALUES(ccc);INSERTINTOdbo。postVALUES(ddd);INSERTINTOdbo。postVALUES(eee);INSERTINTOdbo。postVALUES(fff);
  有了测试数据之后,我们按照隔离级别高低的顺序来观察吧。2。SERIALIZABLE事务
  事务串行化其实很好理解,如果要在C中找对应那就是ReaderWriterLock,读写事务是完全排斥的,接下来把SQLSERVER的隔离级别调整为SERIALIZABLE。SETTRANISOLATIONLEVELSERIALIZABLEGOBEGINTRANSELECTFROMdbo。postWHEREid3COMMIT
  打开profile,选择lock:Acquired,lock:Released,SQL:StmtStarting选项,开启观察。
  从图中可以清楚的看到,SQLSERVER直接对post附加了S锁,在COMMIT之后才真正的释放,在S锁期间,Insert和Update引发的X锁是进不来的,所以就会存在相互阻塞的情况,也许这就是串行化的由来吧。
  sqlserver是一个支持多用户并发的数据库程序,如果锁粒度这么粗,必定给并发带来非常大的负面影响,不过文章开头的那三个指标脏读,幻读,不可重复读肯定都是不会出现的。2。REPEATABLEREAD事务
  什么叫可重复读呢?简而言之就是同一个select查询执行二次,不会出现记录修改的情况,在真实场景中两次select查询期间,可能会有其他事务修改了记录,如果当前是REPEATABLEREAD模式,这是被禁止的,接下来的问题是如何落地实现呢?我们来看看SQLSERVER是如何做到的,参考sql如下:SETTRANISOLATIONLEVELREPEATABLEREADGOBEGINTRANSELECTFROMdbo。postWHEREid3COMMIT
  这个图可能有些朋友看不懂,我稍微解释一下吧,数据库由数据页Page组成,数据页由记录RID组成,有了这个基础就好理解了,SQLSERVER会在事务期间把1:489:0也就是id3这个记录全程附加S锁,直到事务提交才释放S锁,在事务期间任何对它修改的X锁都无法对其变更,从而实现事务期间的可重复读功能,如果大家不明白可以再琢磨琢磨。
  这里有一个细节需要大家注意一下,可重复读的场景下会出现幻读的情况,幻读就是两次查询出的结果集可能会不一样,比如第一次是3条记录,第二次变成了5条记录,为了方便理解我来简单演示一下。会话1SETTRANISOLATIONLEVELREPEATABLEREADGOBEGINTRANSELECTFROMdbo。postWHEREid3WAITFORDELAY00:00:05SELECTFROMdbo。postWHEREid3COMMIT会话2
  在会话1执行的5s期间执行会话2语句。BEGINTRANINSERTINTOdbo。post(content)VALUES(gggggg)COMMIT
  稍等片刻之后,会发现多了一个记录7,截图如下:
  3。READCOMMITTED
  提交读是目前SQLSERVER默认的隔离级别,它是以不会出现脏读为唯一目标,何为脏读,简而言之就是读取到了别的事务未提交的修改数据,这个数据有可能会被其他事务在后续回滚掉,如果真的被其他事务回滚了,那你读到了这样的数据就是错误的数据,可能会给你的系统带来非常隐蔽的bug,为了说明这个现象,我们用两个会话来测试一下帮助大家理解。会话1
  在这个会话中,将id3的记录修改成zzzzzBEGINTRANUPDATEdbo。postSETcontentzzzzzWHEREid3WAITFORDELAY00:00:05ROLLBACK会话2
  这个会话中,重复执行sql查询。BEGINTRANSELECTFROMdbo。postWITH(NOLOCK)WHEREid3脏读啦WAITFORDELAY00:00:05SELECTFROMdbo。postWITH(NOLOCK)WHEREid3正确的数据COMMIT
  为了实现脏读这里加了nolock关键词,从图中明显的看到,获取的zzzzz数据是错误的,在一些和钱打交道的系统中是被严厉禁止的。
  有了这些基础再理解可提交读可能会容易些,是不是很好奇SQLSERVER是如何实现的呢?参考sql如下:SETTRANISOLATIONLEVELREADCOMMITTEDGOBEGINTRANSELECTFROMdbo。postWHEREid3COMMIT
  从加锁流程看,SQLSERVER会逐一扫描数据页附加IS锁,扫完马上就释放,不像前面那样保持到COMMIT之后,如果找到记录所在的Page时,会对下面的所有记录附加S锁,这个时候X锁就进不来了,这就是它的实现原理,大家可以把刚才的脏读的sql中的nolock去掉试试看,两次读取结果都是一样的。4。READUNCOMMITTED
  本质上来说READUNCOMMITTED和nolock的效果是一样的,会引发脏读现象,主要是因为READUNCOMMITTED根本就不会对表记录使用任何锁,参考sql如下:SETTRANISOLATIONLEVELREADUNCOMMITTEDGOBEGINTRANSELECTFROMdbo。postWHEREid3COMMIT
  接下来观察sqlprofile的输出。
  可以看到READUNCOMMITTED只会对表和堆表结构这种架构附加锁,不会对表中记录附加任何锁,也就会引发脏读现象。三:总结
  其实SQLSERVER还有带版本的SNAPSHOT隔离级别,在真实场景中往往会给TempDB造成很大的压力,这里就不介绍了。
  相信通过Profile观察到的加锁动态过程,会让大家有更深入的理解。

韩红称自己年轻时比杨幂还漂亮,以为是开玩笑,看到照片我信了说到韩红相信大家都不陌生,她是一位非常知名的歌手,创造了很多脍炙人口的歌曲,传唱度非常高。而且韩红除了是一名歌手之外,还是导演和主持人,私下里她是一个非常有爱心的慈善家,慈善事……油价大跌,有望重回七元时代油价上一次7元时代,已经是很久以前的事了。出品首席财经观察作者周松涛油价有望重回7元时代12月5日,国内成品油价将迎来调整窗口期,很大概率将会迎来两连跌,重回……苹果更新iOS15功能页支持双卡的iPhone,可在iMesIT之家9月20日消息据MacRumors报道,苹果公司最近更新了iOS15的功能页面,赶在iOS正式版推送之前强调了一些额外的信息。苹果表示,在支持双卡的iPhone上……大爆冷!西亚卡姆4013创新高!猛龙力克残阵绿军,东部第一易在接连拿下2连胜后,排名东部第六的猛龙队,此役坐镇主场,又迎来了正值6连胜期间,排名高居东部第一的绿军的挑战。猛龙队方面,西亚卡姆状态火爆,此役球队主力球员又倾巢出动,猛……苹果新专利曝光AppleWatch有望免抽血测血糖IT之家2月15日消息苹果近日向美国专利商标局(USPTO)提交的一份名为利用环境传感器增强动态环境中的太赫兹光谱和成像性能的专利申请指出,设备可以使用吸收光谱来无创获取血糖读……7年前LG手机就有灵动岛,网友苹果也沦为抄袭者了?近期iPhone14ProProMax的灵动岛设计引发了网友热议,所谓灵动岛其实是一种利用固定区域显示不同UI画面和功能界面的功能,一方面可以充分利用屏幕,另一方面可以遮羞。……DigiTimes苹果iPhone14Pro预计使用QLC闪IT之家10月1日消息苹果iPhone13系列已经正式发布,如今关于下一代iPhone14Pro系列的爆料也逐渐出现。根据DigiTimes消息,苹果预计在下一代手机上使用QL……苹果iOS13上手我变黑了,也变强了今年的WWDC,苹果为我们带来了多款软硬件新品,其中最受人瞩目的,就是iOS13了。苹果花了近40分钟介绍了新的iOS,小编也简单上手体验了下,除了之前大家都知道的DarkMo……苹果iOS13iPadOS公测版将支持OTA更新IT之家6月5日消息今年把iPhone或iPad升级到新的iOS13和iPadOS开发者预览版系统要比往年更复杂一些,即使你拥有开发者帐户,也必须使用安装最新的macOS或Xc……华为鸿蒙系统或将在2027年消亡?短见!海外专业机构StrategyAnalytics的调研数据显示,在全球的智能手机操作系统中,安卓系统占比最高,达到81;IOS系统全球占比约为18;鸿蒙系统占比为2。而且,这家机……为什么地球选择了碳基生命,而不是硅基生命?请问:地球上的碳元素多还是硅元素多呢?如果你的回答是硅元素更多,那就恭喜你答对了。实际上,地球上的硅元素可能比你想象中的还要多,根据科学家的估算,地球上碳元素的总质量大概只有硅……潜逃十六年,他变身亿万富翁,娶4个妻子生12娃,被捕后供出同2015年深秋河南驻马店,亿万富翁石二群开着豪车前往自己捐赠的希望小学工地视察工作。石二群刚一下车,就被工地的各级领导围了上来,夸赞石二群为大善人,捐赠希望小学功在当代,……
回暖的欧洲旅游市场与等待的中国游客近日,国际航空运输协会预测,2022年全球航空业亏损将收窄至97亿美元,2023年行业有望恢复盈利。随着多国放宽旅行限制,被压抑的出行需求将逐步释放,全球航空业复苏进程加快。相……商务部立案调查4月12日,商务部官网发布商务部关于就台湾地区对大陆贸易限制措施进行贸易壁垒调查的公告中华人民共和国商务部(以下简称商务部)于2023年3月17日收到中国食品土畜进出口商……高血压就怕缺钾,长期吃降压药,建议平时多补充4类高钾食物导语:高血压是我们日常生活中常见的慢性疾病,对心脑血管的健康有极大的危害。调查显示,我国高血压患病人数超过3亿人。可以这么说,几乎每3个成年人,就有1个患有高血压,严重危……好入手的情人节对表不知道怎么送礼的朋友看过来〔腕表之家腕表推荐〕爱人在旁,即使平淡的生活也会有滋有味;深情不变,即便岁月流转也无畏无惧。每一年的情人节,都是情人之间互诉衷肠展现仪式感的日子。今年的情人节,你的身边又是谁呢……济南百花公园白玉兰美出天际背后是他默默守护32年来源:【海报新闻】大众网海报新闻记者李金珊张一帆济南报道阳春三月,正是玉兰花盛开的季节。在山东济南,提到观赏玉兰花,大家都会想到百花公园的玉兰大道。最近,百花公园里……湖南韶山毛主席故地,见到毛主席遗落人间的物品,应当国宝传承哈喽,大家好,我是骑行重走红军长征路的小廖,现在来到韶山毛主席纪念馆,参观了解毛主席丰富多彩的日常生活和情感世界。本篇文章将要讲述的是,纪念馆内毛主席的遗物展。水滴映射光……重组即将完毕!曼城实力世界第一,利物浦紧随其后,皇马无缘前五曼城这些年的转会支出越来越少,球队经营趋向稳定。在出售球员方面,曼城取得了突破,2022年诞生了多笔重要高价套现的交易,费兰托雷斯以5500万欧元转会费加盟巴萨,热苏斯以522……真丝顺纡绉飘逸细腻透气,不变的优雅灵气真丝顺纡绉:夏天比较流行的面料之一。主要成分是22022D桑蚕丝100。真丝顺纡绉,顺纡绉面料是先后经过打线、强捻、预缩、环保染色等深加工而成。薄型绉类丝织物,以桑蚕丝为……曾被誉为董卿接班人,如今半年见不着人影,央视辟谣说到传媒界的天花板,很多人第一反应肯定就是央视,那是不少主持人向往的舞台,因为它代表着至高无上的荣誉,谈起央视知名的女主持人,董卿肯定是排在了第一位,此外,朱迅、周涛紧随其后,……强有力的证据表明全球生物多样性的第六次大规模灭绝正在进行中地球上生命的历史已经五次被极端自然现象引起的生物多样性大规模灭绝事件所标记。今天,许多专家警告说,第六次大灭绝危机正在发生,这一次完全是由人类活动造成的。夏威夷大学马诺阿……IVL秋季赛GG触底反弹终结连败,Gr爆冷不敌Weibo北京时间11月21日,第五人格2021IVL秋季赛第六周最后一日赛程结束,赛果分别为:MRC战胜Reborn、GG战胜ACT以及Weibo战胜Gr。MRC战胜Reborn……花生油菜籽油玉米油,哪种油更健康?注意这3种油尽量少吃我国做菜方法包括烹蒸煮煎,所以做菜的时候会放很多的油,在早年期间,大家喜欢用猪的肥油熬制油,进行炒菜,现在大家认为猪油做菜不健康,改成植物油做菜。随着大家需求增加,商家为……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网