首页 > 其他分享 >简述一条更新语句的执行过程

简述一条更新语句的执行过程

时间:2022-08-18 11:24:43浏览次数:54  
标签:语句 执行器 buffer 更新 简述 内存 磁盘 数据

更新语句(增删改)的执行,基本流程和查询一致,也要经过连接器、分析器、优化器、执行器等功能模块,区别就在于拿到符合条件的数据之后的操作。

  1. 执行器先通过存储引擎获取需要修改的数据。如果该数据所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返回。

  2. 执行器修改数据后,再调用存储引擎接口写入这行新数据。

  3. 存储引擎将这行新数据更新到内存(buffer pool)中,同时将这个更改前的数据记录到undo log(保留历史数据,记录事务版本号,形成版本链),以及将更改后的数据记录到 redo log 里面(记录的是数据页的改动),此时 redo log 处于 prepare 状态。然后告知执行器执行完成了,随时可以提交事务。

  4. 执行器生成这个操作的 binlog,并把 binlog 写入磁盘。

  5. 执行器调用存储引擎的提交事务接口,存储引擎把刚刚写入的 redo log 改成提交(commit)状态,更新完成。

 

这里面还有一个change buffer

当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行 change buffer 中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的正确性。

change buffer的收益主要在减少普通二级索引页从磁盘加载到内存的过程。对于数据的修改,还是要从磁盘中读数据到内存的。

标签:语句,执行器,buffer,更新,简述,内存,磁盘,数据
From: https://www.cnblogs.com/dong320/p/16598044.html

相关文章

  • sql语句查询
    xxxImpl.java 继承IDao<xxx>以qqUser为例publicclassqqDaoImplimplementsIDao<qqUser>{@Overridepublicintinsert(qqUserqqUser)throwsSQLExcep......
  • 6.2 SQL Server更新数据
    SQLServerUPDATE目录SQLServerUPDATE简介示例UPDATEJOINUPDATEJOIN示例A)SQLServerUPDATEINNERJOIN示例B)SQLServerUPDATELEFTJOIN示例简介要修改表中的......
  • 闲话(持续更新)
    学习兔爷学dottle 写闲话。有点像小时候写日记的感觉,但是不是记录一天干了什么。内容均来源和 Loxilante 在qq或telegram上的吹水,绝大多数是自言自......
  • Fuzz(持续更新)
    1.什么是Fuzz测试?漏洞挖掘有三种方法:白盒代码审计、灰盒逆向工程、黑盒测试。其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。Fuzz测试,也......
  • 使用Fiddler劫持网络资源为前端开发助力(示例:Dynamic CRM 表单开发 也能热更新? )
    背景:使用过vue开发的童鞋应该都知道,在开发vue项目的过程中,有个叫"热更新"的功能特别爽,在传统html开发到初次接触vue时,才发现原来前端开发可以这么香。热更新的表现形......
  • mysql/表sql语句补充/关键字查询
    操作表的SQL语句补充alter1.修改表名 altertable表名rename新表名;2.新增字段 altertableadd字段名字段类型(数字)约束条件3.新增指定字段排在第一位 ......
  • flutter 杂项 —— Stateful 与 Stateless 的更新
    一、使用StatefulBuilder单独更新某个组件的状态示例:awaitshowDialog<void>(context:context,builder:(BuildContextcontext){int?selectedRadio=0......
  • (待更新)【鸟哥 Linux 10.6】管线(管道)命令
    【鸟哥Linux10.6】管线(管道)命令管道命令使用|创建匿名管道。默认管道命令仅仅能处理标准输出,对于标准错误输出予以忽略。但可以使用重定向改变这一行为。管道......
  • 安卓系统经常提示更新?我们该怎么选择,其实早有答案【简单明了易懂】
    现在迷上了他们家的资讯,片片文章都精彩,给大家留个路 叮当守护-新闻资讯-安卓系统经常提示更新?我们该怎么选择,其实早有答案。原来锤子科技的Boss罗总曾发微博就说过这样的......
  • 白云项目SQL语句记录
    赋值语句相关成果输出相关一、封面无相关SQL语句,直接从【使用权宗地】读取。二、地上附着物清点汇总表1.与宗地关联关系SYQZDATTR.ZDYBH=白云区地上附着物测绘......