SQL在MySQL数据库中是如何执行的


今天和mysql视频教程栏目一起看看一条更新语句又是怎么一个执行流程。

SQL在MySQL数据库中是如何执行的

查询语句的一套执行流程,更新语句也会同样的走一步,下边我们在对照上次文章中的图来简单的看一下:

<img src=" class="lazyload" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d529960ec1dd496ca90860641bcaa093~tplv-k3u1fbpfcp-watermark.image" data-width="800" data- style="max-width:90%"/>

首先,在执行语句前要先连接数据库,这是第一步中连接器的工作,前面我们也说过,当一个表有更新的时候,跟这个表有关的查询缓存都会失效,所以我们一般不建议十月查询缓存。

接下来,分析器会经过语法分析和词法分析,知道了这是一条更新语句后,优化器决定要使用哪一个索引,然后执行器负责具体的执行,先找到这一行,然后做更新。

与查询语句更新不同的是,更新流程还涉及两个重要的日志,这个我们在前边的文章中也有专门的介绍,有兴趣的可以找一下上周的文章《MySQL的两个日志系统》,这里就不多做介绍了。

下边通过一个简单的例子来分析一下更新操作的流程。

我们先创建一张表,这个表有主键ID和一个整型字段c:

mysql> create table demo T (ID int primarty ,c int);复制代码

然后将ID=2的这一行的值加1

ShopEx助理 ShopEx助理

一个类似淘宝助理、ebay助理的客户端程序,用来方便的在本地处理商店数据,并能够在本地商店、网上商店和第三方平台之间实现数据上传下载功能的工具。功能说明如下:1.连接本地商店:您可以使用ShopEx助理连接一个本地安装的商店系统,这样就可以使用助理对本地商店的商品数据进行编辑等操作,并且数据也将存放在本地商店数据库中。默认是选择“本地未安装商店”,本地还未安

ShopEx助理 0 查看详情 ShopEx助理
mysql> update table demo set c = c + 1 where ID = 2;复制代码

接下来我们来看看update语句的执行流程,图中浅色框表示在存储引擎中执行的,神色框代表的是执行器中执行的。

我们可以看到最后的时候,写redolog的时候分了两步,prepare和commit,这就是我们常说的“两阶段提交”。

为什么日志需要“两阶段提交”?

由于redo log和binlog分别是存储引擎和执行器的日志,是两个独立的逻辑,如果不用两阶段提交,无论先提交哪个后提交哪个都会存在一些问题。我们这里也借助上边的例子看一下,假设当前ID=2的这一行值为0 ,在update的过程中写完了第一个日志后,第二个日志还没写期间发生了crash,会怎么样?

  • 先写redolog后写binlog。假设redolog写完,binlog还没写完,MySQL进程异常重启了。我们知道,redolog写完以后,系统即使崩溃了,也可以将数据恢复,所以在MySQL重启后,这一行回被恢复成1。由于binlog没写完就crash,这时候binlog里面是没有这个语句的,因此之后备份日志的的时候,存起来的binlog日志也没有这一条语句。当我们需要通过binlog来恢复数据的时候,由于binlog丢失了这条语句,恢复出来的这一行的值就是0,与原库的值不一样啦。
  • 先写binlog后写redo log。如果写完buglog之后,redo log还没写完的时候发生 crash,如果这个时候数据库奔溃了,恢复以后这个事务无效,所以这一行的值还是0,但是binlog里已经记载了这条更新语句的日志,在以后需要用binlog来恢复数据的时候,就会多了一个事务出来,执行这条更新语句,将值从0更新成1,与原库中的0就不同了。

我们可以看到如果不使用“两阶段提交",那么数据库的状态就会和用日志恢复出来的库不一致。虽然平时用日志恢复数据的概率比较低,但是用日志最多的还是扩容的时候,用全量备份和binlog来实现的,这个时候就可能导致线上的主从数据库不一致的情况。

相关免费学习推荐:mysql视频教程

以上就是SQL在MySQL数据库中是如何执行的的详细内容,更多请关注其它相关文章!


# SQL  # MySQL数据库  # 离线  # 写完  # 这一行  # 还没  # 数据库中  # 这条  # 的是  # 这是  # 整型  # 怎么给学校网站进行优化  # 作文优化网站手机版教程  # 陕西网站优化公司哪家好  # 绵阳网站建设的基本步骤  # 工体网站建设  # 樟木头企业网站建设价格  # 旅游网站建设和推广怎样  # 海南企业网站建设语言  # 就会  # 高埗家具网站推广地址  # 定西手机网站建设 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: iPhone 15 Pro如何查看存储空间占用_iPhone 15 Pro存储空间查看教程  苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法  风车动漫官网首页入口登录 风车动漫在线观看正版地址  《oppo商城》维修服务位置  在Django中动态检查模型关联:一种灵活的解决方案  Mac怎么关闭按键声音_Mac键盘打字音效设置  优化 React onClick 事件处理:函数引用与箭头函数的对比  铁路12306怎么申请退票_铁路12306退票申请操作流程  Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  哈尔滨城市通昵称修改方法  猫眼app抢票快还是小程序快  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  解决CSS容器溢出问题:使用calc()实现精确布局与边距控制  《理想汽车》权限管理设置方法  三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧  在Spring Boot Thymeleaf中利用布尔属性实现容器的条件显示  PHP使用DOMDocument与XPath精准追加XML元素教程  《东方航空》添加乘机人方法  键盘测试软件哪个好_键盘故障检测工具推荐  《搜书吧》阅读书籍方法  铁路12306座位怎么选_12306官方选座操作方法  Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问  青橙手机语音助手怎么唤醒_青橙手机语音助手设置与唤醒方法  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  CSS如何控制元素外边距_margin实现布局间隔  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  高效调试PHP大型嵌套数组:JSON序列化与可视化工具实践  晨报|开发商暗示《空洞骑士:丝之歌》DLC开发中 《合金装备4》有望重制  Go Goroutine调度与并发执行深度解析  WPS文字如何进行简繁转换  vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足  win11关机几秒又自己开机 Win11关机自动重启问题修复  Google Cloud Functions 时区处理指南:理解与最佳实践  解决Pandas DataFrame高度碎片化警告:高效创建多列的策略  C++如何将字符串转换为大写或小写_C++ transform函数的使用技巧  顺丰快递单号查询寄件人 顺丰寄件人查询入口  画质怪兽120帧安卓和平精英免费版  《金山词霸》语音翻译方法  j*a中ArrayBlockingQueue的使用  《下一站江湖2》独孤剑诀习得方法  windows10怎么设置电源按钮_windows10按下电源键功能修改  漫蛙manwa漫画官网链接_漫蛙manwa最新可用网址推荐  创建快捷方式启动系统保护  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  《tt语音》超级玩家开通方法  如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐  抖音火山版如何进行提现  申通快件单号查询平台 申通包裹物流动态跟踪 

 2020-11-09

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.