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

面试官你说说一条更新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;

张译为何在最近两年突然爆火?除了努力他还应该感谢黄晓明在娱乐圈,不是所有的演员一开始就能得到认可,需要经历一个磨炼的过程,最终每个人的努力和付出都将会获得相应的回报,而这一切只是时间的问题罢了,张译的成功便是很好的例子。在电视剧鸡毛飞一举三得!黄晓明的退出,是非常明智的选择乘风破浪的姐姐第二季未播先火,让很多观众早已期待姐姐们的精彩表演,而这档综艺毋庸置疑成为2021年最火爆的节目之一,但黄晓明的退出多少有些遗憾。在浪姐2第一次公演的时候,因为李菲儿厉害!不花一分钱,李菲儿一句晓明哥,让她登上各大热搜榜在娱乐圈,明星们最在意的是什么呢?除了名和利应该就是热度吧,没有热度的明星就像被时代所抛弃,所以很多的艺人都想尽办法的制造舆论,有的甚至花钱,为的就是能够登上热搜受到更多人的关注。41岁章子怡演15岁少女遭嘲笑!难道忘了自己说过的话?1月9日,三金影后章子怡的首部电视剧作品上阳赋强势开播,因为前期宣传力度比较大,所以刚开播网友们对这部剧的关注度也是非常的高,原本以为凭借章子怡超高的号召力能得到观众的认可,没想到华晨宇承认与张碧晨生子,一家三口合照曝光,最高兴的应该是张杰娱乐圈真是个神奇的地方,这两天发生的事情让我改变了对结婚生子这件事情的看法,原来结婚怀孕生孩子养孩子这四件事情是没必要有联系的,都可以独立完成。先是郑爽和张恒的事情,让我懂得不用怀千亿身价,土味公主,姚安娜梦想和长相一样,变化多端在娱乐圈有钱有权才是王道。最近,娱乐圈又多了一位女明星,她直接签约天浩盛世,和陈飞宇戚薇成为同事,不仅如此她还是最贵的女明星之一,身价千亿,这位就是任正非的二女儿姚安娜。对于姚安娜唐探3票房超过10亿,热度不减却遭差评?原因有三过大年看春晚已成为人们习以为常而必不可少的事情,除此之外,春节看电影也成为很多人过节必做的一件事,所以每年的贺岁片电影也是非常的精彩。今年的春节档电影也是非常的火爆,大年初一首日票相比华晨宇的无奈,王子文更加勇敢,王琳每个生命都应得到尊重娱乐圈本来就是一个备受关注的地方,所以明星们的一举一动都有可能引起一场舆论,尤其是艺人们的婚姻感情问题,更是大家关注的焦点。其实明星们都不希望自己的私人生活被曝光出来,因为那样会直劣迹艺人的春天来了!权威规定出台,范冰冰郑爽复出还有希望?娱乐圈原本就是一个鱼龙混杂的是非之地,但是因为名利的趋势,使得很多人都想进圈分一杯羹,以至于现在的娱乐圈门槛越来越低,劣迹明星也越来越多,给社会和粉丝带来了恶劣的影响。在之前,只要王琳天天议论男人,聊男人,能不能放我们出去比划比划怦然再心动到底是个什么样的节目?如果单从节目的效果来看,这就是一个为熟龄女性征爱真人秀,但在观众眼中这不仅仅是一个相亲节目,而且还是一个吐槽大会,明星自曝大会,更是那些结过婚有过孩张彬彬生活里,活得细水长流!表演中,保持日益精进如果有人问现在最火的两部电视剧是哪两部?肯定会有人说暴风眼和司藤。确实,这两部戏在当下确实非常的受欢迎,一部是都市反谍剧,满足观众们的探索心理另一部是言情奇幻故事,让恋爱中的你学会
传统布局浪费面积,不如穷装舍弃客厅,用餐桌椅替代沙发茶几装修一定要将餐厅和客厅分开吗?现在很多100来平的户型,留的餐厅面积都小到忽略不计,客厅反而预留面积倒挺大,与其还按照传统的装修套路区分开来,还不如学着韩国穷装舍弃沙发茶几,直接将定制衣帽间上万块,不如省下这个钱换成五金隔板,收纳更加灵活花上万块定制衣帽间,打满了柜子,其实不一定要打那么多柜体,现在也很流行简易设计,五金件隔板,收纳效果丝毫不输。至于简易衣帽间如何设计,他家就有几个收纳技巧分享1隔板下装挂杆,形成双兄弟俩合资买套小公寓,没有多余的家具,全屋黑红灰看起来很高级合租大家都熟,可你们听说过合伙买房的吗?越南有对兄弟,毕业后两人租房合伙创业,结果经常碰到房东加租赶人,一气之下两人合资买下了一套65的小公寓,自己设计自己装修,风格大胆另类,全屋比起顶楼我更愿意买底复式,将近9的天井封顶打造茶室,美哉合肥这位业主买下200底复式房,赚了为什么这样说呢?往往大家都不喜欢买带地下室的房子,更倾向于顶楼,但看完悦湖山院这套,简直不要太香!地下一层自带将近9的天井,打造成天井茶室,美哉韩国业主晒出父母养老房,122昏暗老气,不过度装修改造很纯粹在很多人眼里养老房就应该是满屋的实木家具,或者是大气沉稳的中式风格,但下面韩国业主给父母装修的养老房,全屋没有过度装修,极简风看着通透舒适,家里一尘不染,看起来真的一点也不像是养老沙发茶几可以淘汰了,不要客厅自由活动,反正一年到头也没人串门去客厅化大家都听说过,但韩国这位业主家就比较夸张了,客厅不买沙发茶几,不要电视,孩子直接坐地上,传统的布局对他们来说反而很鸡肋,没想到这一大胆设计不但不被人吐槽,反而成了大家装修的65老房要在客厅做饭,卫生间里洗菜洗米,10万翻新生活更加方便住在设计不合理的老房子里是件糟心的事情,客厅做饭,卫生间洗菜洗米,这些都让业主无时无刻不在吐槽,夫妻俩决定搬出去租房半年,将房子重新翻新一下!这套房子面积只有65,是一栋房龄在15学音乐的人老得慢,听对音乐,胜过做十次美容?学音乐的人老得慢,听对音乐,胜过做十次美容?她在风中随着悠扬琴声零乱飘逸在银发感动了全世界!如果有一天我老了也能如此这句话是不是戳中了你此刻的心灵底处?!平日里悦耳的音乐除了舒缓身音乐的力量音乐是人类的灵魂,bai自从有了音乐的创造,人的灵魂就有了一个依靠。在心灵的深处,隐藏着很多鲜为人知的秘密,唯有音乐,才能激起那潭深水的涟漪。音乐是一条钥匙,这条钥匙能打开通向梦境学音乐,究竟存不存在学着玩儿这一说?很多家长都抱着这样的心态让孩子学习音乐只是为了给孩子培养一个兴趣爱好,陶冶情操,不必要让孩子下太大的工夫,还是孩子的学习成绩最重要。真的是这样吗?不走专业就不用对孩子严格要求吗?付关于揉弦,2位世界级小提琴大师教你找支点关于揉弦,2位世界级小提琴大师教你找支点伊凡加拉米安在他的小提琴演奏和教学原则一书的揉音(揉弦)一节中说,学习揉音,开始时,手最好放在第三把位,手的下半部与琴身相接触。以保证手臂处