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

面试官你说说一条更新SQL的执行过程?

  在上一篇《面试官:你说说一条查询SQL的执行过程?》中描述了Mysql的架构分层,通过解析器、优化器和执行引擎完成一条SQL查询的过程,那这一篇续上继续说明一条更新SQL的执行过程。
  对于一个SQL语句的更新来说,前面的流程都可以说类似的,通过解析器进行语法分析,优化器优化,执行引擎去执行,这个都没有什么问题,重点在于多了一点东西,那就是 redo_log 、undo_log 和binlog 。
  执行流程大致如下:  首先客户端发送请求到服务端,建立连接。 服务端先看下查询缓存,对于更新某张表的SQL,该表的所有查询缓存都失效。 接着来到解析器,进行语法分析,一些系统关键字校验,校验语法是否合规。 然后优化器进行SQL优化,比如怎么选择索引之类,然后生成执行计划。 执行引擎去存储引擎查询需要更新的数据。 存储引擎判断当前缓冲池中是否存在需要更新的数据,存在就直接返回,否则去从磁盘加载数据。 执行引擎调用存储引擎API去更新数据。 存储引擎更新数据,同时写入undo_log、redo_log信息。 执行引擎写binlog,提交事务,流程结束。
  可以看到相比于查询流程,实际上更新多了关于undo_log和redo_log的流程,接下来再具体探讨一下这几个流程的执行过程是什么样子。
  redo_log
  redo_log 按照字面翻译称为重做日志 ,是InnoDB存储引擎特有的,用于保证事务的原子性和持久性。怎么理解呢?简单来说就是保存我们执行的更新语句的记录,如果服务器或者Mysql宕机,通过redo_log可以恢复更新的数据。
  按照上述流程来举例的话,比如 update user set age=20 where id=1 这样的简单更新SQL,我们不管执行引擎怎么拿到的数据,不管是从缓冲池拿的还是磁盘拿到的,这条现在数据都在缓冲池里面,然后去缓冲池的数据把age 改成10。
  缓冲池内存中的数据已经更新好了,那么接下来就该开始写redo_log了,只是redo_log也不是直接写文件的,一般都是这样对吧,直接写的话性能太差了,所以就有redo_log_buffer叫做redo_log缓冲。
  在写redo_log的时候先把数据写到redo_log缓冲区,然后异步写入磁盘,很显然,极端情况下会有丢失数据的可能。
  控制这个刷盘策略的的参数叫做 innodb_flush_log_at_trx_commit 。
  这个参数有3个值:0|1|2,默认的话是1。
  0代表提交事务时不会写入磁盘,这样的话性能当然最好,但是在Mysql宕机的情况会丢失上一秒的事务的数据。
  1代表提交事务一定会进行一次刷盘,同步当然性能最差,但是也最安全。
  2代表写入文件系统的缓存,不进行刷盘。这个选项性能略差于1,Mysql宕机的话对数据没有任何影响,只有在操作系统宕机才会丢失数据,这种情况下默认Mysql每秒会执行一次刷盘。
  使用0或者2虽然提高了性能,但是变相的也丧失了事务的持久性。  undo_log
  重做日志保证了事务的持久性,保证能够在宕机后恢复事务的数据,那么另外一种情况就是事务在需要回滚的时候怎么办?这时候就是undo_log的作用了,它保证了事务的一致性。
  对于undo_log来说,简单理解就是做了逆向操作。
  比如 insert 一条数据,就对应生成delete ,update 语句则生成相反的更新语句,这样做到将数据修改回之前的状态。 binlog
  binlog称为二进制日志,大家都很熟悉,记录了改变数据库的那些SQL语句,对于这里来说,更新语句当然是了。
  通过不同于 redo_log 是独属于存储引擎独有的东西,binlog 则是Mysql本身产生的日志。
  不同于redo_log是物理日志,binlog和undo_log都属于逻辑日志。
  这有什么区别呢?
  简单来说,逻辑日志可以认为就是存储的SQL本身,而物理日志看看redo_log存储的是啥就知道了,关于page_id页ID,offset偏移量啊这些东西,记录的是对页的修改。
  另外物理日志可以保证幂等性,而逻辑日志则不一定能,除非本身SQL就是幂等的。
  上面我们提到了redo_log的刷盘策略,binlog就和它非常类似了,控制参数是 sync_binlog 。
  默认值为0,相当于是 innodb_flush_log_at_trx_commit 的值为2,由文件系统控制,同样如果服务器宕机,binlog丢失,当然我们也可以改成1,就和redo_log的效果是一样,每1次事务提交都同步写入磁盘。 事务
  为了保证写redo_log和binlog的一致性,实际采用了二阶段提交的方式。
  prepare阶段:根据 innodb_flush_log_at_trx_commit 设置的刷盘策略决定是否写入磁盘,标记为prepare状态。
  commit阶段:写入binlog日志,事务标记为提交状态。  总结
  发布主题 br/* 自定义样式,实时生效,浏览器实时缓存 */brbr/* 全局属性br * 页边距 padding: 30px;br * 全文字体 font-family: ptima-Regular;br * 英文换行 word-break: break-all;br */br #nice {br  font-size:16px;br  padding:5px;br  font-family: -apple-system-font,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",Arial,sans-serif;br  color: rgb(51,51,51);br}brbr/*图片下提示*/br#nice figcaption{br  font-size:12px;br}br#nice .imageflow-caption{br  font-size:12px;br}brbr/* 段落,下方未标注标签参数均同此处br * 上边距 margin-top: 5px;br * 下边距 margin-bottom: 5px;br * 行高 line-height: 26px;br * 词间距 word-spacing: 3px;br * 字间距 letter-spacing: 3px;br * 对齐 text-align: left;br * 颜色 color: #3e3e3e;br * 字体大小 font-size: 16px;br * 首行缩进 text-indent: 2em;br */br#nice p {br  font-size:16px;

星爷焦急致电询问达叔病情,数十载风雨纷纷扰扰,一切尽在不言中日前吴孟达忽传因肝癌入院手术,一时间大家都担心达叔的安危,希望他能挺过这一关。联想起去年底看到有爆料说吴孟达直播首秀,本是要助农带货香米,结果收了商户15万坑位费却只卖出不到10单离婚大数据被曝光两人能不能走到最后,其实早已注定?文非也前不久,一组2020年第一季度全国离婚率统计数据上了热搜。位列榜首的是吉林省,高达71。51。有一半多在40左右,全国平均下来也是这个水平。这意味着,每10对夫妻,就有4对办怒怼情人,公开新欢,摆脱渣男,张靓颖你太狠了文三三微博上的话题张靓颖是真正的天花板吧一下冲上了热搜。没点开前,我还以为是张靓颖又拿了什么大奖,居然给予天花板这样高的评价。可是点开之后,画风突变。原来是张靓颖出现在了成都地铁9婚姻中的男人最怀念哪种旧情人?三个业界精英男说出了大实话原创文蕊小花自从王菲离婚后,与谢霆锋复合的言论就从未停止过。谢霆锋为此还是发了一条微博。他发文有事吗?你不是刚吃过?配图是一张自己吃剩下一半鱼的照片,亮点却是桌子下面的小黑猫,很快就被杨颖否认插足,老公黄晓明力挺baby不是第三者文tammy最近黄晓明和anglebaby的消息真是每天霸屏。1月5日晚,有网友爆料乘风破浪的姐姐2第一场公演结束。黄晓明与李菲儿十年后首次同场,堪称这次节目的最大卖点。录制时李菲流金岁月中,倪妮钓富豪被骗婚,这3个婚姻真相你要懂文Gloria热播剧流金岁月终于迎来大结局了。南孙最终通过自己的努力按揭买了房子,锁锁离婚后,带着小锁和南孙的奶奶住在一起,闺蜜俩一起照顾南孙奶奶和小锁。一个在家做饭,另外一个在外那英恋爱10年,未婚生子后遭抛弃她到底经历了什么?文蕊小花乘风破浪的姐姐第一期播出,热度一直飙升,官宣阵容排到了微博热搜榜的前几名,姐姐名单中赫然写着那英的名字。那英都来了,果然热闹。1988年进入乐坛1994年凭白天不懂夜的黑火卢悦男人什么时候对你失去性趣的?其实一眼就可以看出来文卢悦关键词欺骗我29岁,男友28岁,长相帅气,很会哄女生开心。婚前我知道他赌博,但是他一再保证已经完全戒了,从认识到结婚,不到一年。婚后生了一个儿子,目前怀了二胎,5个多月。前一董洁出轨8年后再被扒,上浪姐2骂下台离婚的内幕是什么?文乔木前两天,乘风破浪的姐姐2阵容官宣,董洁也在官宣名单之中。不少网友对董洁的出现表示强烈反感和抵制董洁都能上,凭什么李小璐不行?如果说娱乐圈有哪些把一手好牌打到稀烂的人,董洁绝对云南虫谷开播,魔改还是高质量?原班人马都满意云南虫谷开播,原班人马回归告别了陈瞎子,胡八一胖子和杨三人来到云南寻找雮尘珠改编自天下霸唱小说鬼吹灯之云南虫谷,承接龙岭迷窟剧情,这一次是三人小队南下,寻找雮尘珠的故事。胡八一(潘扶弟魔?心术不正,乔家的儿女叶小朗善用温柔陷阱乔家的儿女正在热播乔一成和叶小朗结婚,网友在线求离婚1丫鬟身子小姐命对于叶小朗这个人,在陷入热恋的乔一成眼中,叶小朗此时此刻是他的缪斯,是可爱的人间精灵。结婚后的第一重打击,就是丫
她是陈红侄女,出演父母爱情却被质疑,陈凯歌都捧不红她她是内地第一美人陈红的侄女,国际大导演陈凯歌是她姑父,她就是出道14年却始终不温不火的演员陈旭,也被称为娱乐圈中最不争气的星二代。作为娱乐圈星二代的她有这样实力强大的姑姑姑父撑腰,被宋丹丹抛弃的小雨尤浩然,成于家有儿女败于自己16年前家有儿女的爆红捧出了3位小童星夏雪夏雨和刘星。如今多年过去,三人发展各有不同,杨紫成为娱乐圈顶流,张一山跻身演技派,而尤浩然却销声匿迹了。在近期热播的综艺萌探探探案中,许久余瓦达和西拉米都在孩子9岁时被泰王赶出宫,苏提达会步后尘吗?虽然因为丰富的感情经历,泰国国王玛哈。哇集拉隆功的子女并不少,但被王室官方认证过的子女却只有3位,分别是大公主帕差拉吉帝雅帕(帕公主),小公主思蕊梵,小王子提帮功。泰王玛哈膝下被王真要结婚了?贵妃诗妮娜穿红衣,带父母拜见泰王,公主王子齐到场泰国国王玛哈。哇集拉隆功的贵妃诗妮娜,最近好似开了挂。不仅成功从拉脱瑶中央女子教养所(LatYaowomensprison)脱身,还被赐皇家姓氏,又令泰国王室出面正式承认自己是泰王动图泰王带诗妮娜和儿女过节,王后苏提达独自看剧,带狗过节要拿什么去温暖冬天?那一定是节日氛围吧。与我们一样,泰国王室也进入了节日季。在圣诞元旦接踵而来的季节,泰国王室的过节小组,变成了2个略显奇怪的小分队东边日出西边雨。今年的圣诞节,泰为生下健壮的孩子,西拉米在孕期猛补,却因产后发福遭玛哈嫌弃西拉米,是泰国国王玛哈。哇集拉隆功的前妻。这位被公认有着盛世美颜的前王储妃,在替泰王生下了小王子后,依然惨遭被离婚的命运。从2005年两人结婚,到2014年离婚,这9年间到底发生了诗妮娜被泰王撇下,独自露面几欲落泪,泪水为工作还是感情?或许泰国国王玛哈。哇集拉隆功的贵妃诗妮娜直到现在才明白贵妃不是好当的。贵妃诗妮娜独自露面。前一阵还在与自己你侬我侬的泰王玛哈,转眼间便抛下了自己,单独带着王后苏提达出席公务。带着王22岁为泰王守活寡,为情敌养孩子,颂莎瓦丽嫁入王室真值得?泰国王室中有一朵人间富贵花王太后诗丽吉。这个被老国王普密蓬宠了一辈子的女人,用一生来诠释了任性二字。虽然独子玛哈。哇集拉隆功的性格并不适合当国王,但在她的大力支持下,玛哈仍旧登上了旧爱难忘?泰王与王妃西拉米离婚后2天,为何又将她抓回当尼姑?最近,一则诗妮娜被释放的消息刷爆网络。这位泰国的(前)贵妃在被泰王关了大半年小黑屋后,终于重获自由!是的,泰王终于想起自己的这位小娇妻了。33岁的诗妮娜已经开启了崭新人生,但已经被诗妮娜被关近1年才获释!泰王出手阔绰打前站,亲自接机哄娇妻对于泰国的(前)贵妃诗妮娜来说,去年的10月21日是她不愿意回首的日子在那一天,她被自己的丈夫,泰国国王玛哈。哇集拉隆功投入了拉脱瑶中央女子教养所(LatYaowomenspris泰王15岁小儿子提帮功扫地做公益,4人伺候,帮提垃圾袋垃圾桶自2016年泰国的老国王普密蓬。阿杜德过世后,泰国王室就常常登上热搜。而泰国现任国王玛哈哇集拉隆功的名字也渐渐地为我们所熟知。这位因为后宫事宜出名的网红国王今年已经68岁了,不由得