MySQL一次数据更新的奥秘

93 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

MySQL一次数据更新的奥秘

MySQL是一个非常常用的数据库,相信大家已经使用它来进行过各种增删改查的操作了,那么你知道MySQL一次数据更新会经历什么过程吗?

今天就让我们一起来探究一下MySQL数据更新的秘密。

从SQL语句谈起

SQL语句是大部分程序员和数据库交互使用的语言。SQL简单明了,就算是业余人士也可以快速看懂、上手。

那么问题来了,MySQL内部也是看SQL的吗?

其实不是MySQL内部是看不懂SQL的。

MySQL开启一个线程,从一个数据库连接中读取到SQL,会将SQL交给SQL接口,解析器最终解析成MySQL内部能懂的形式(语法树)。

经过了解析器之后,就来到了查询优化器,这里是MySQL决定如何执行的选择过程。

image.png

你想想,平时你出行之前肯定会先用导航规划一条最优路线的,而这里的查询优化器就相当于MySQL中的导航,它会从众多查找方式中挑出一种它以为最优的方式。

选好了方式,接下来自然就是要按选择的方式执行了。

存储引擎的作用

存储引擎,这个名字听起来很抽象,但是实际上也就那样,它就是用来执行SQL语句的,它可以按照一定的步骤去查询缓存的数据,磁盘的数据,更新等等。

存储引擎具有访问内存和磁盘数据的能力,它还会对外提供接口,供别人调用。虽然存储引擎有这能力,但是也必须需要给别人调用才知道怎么查询,怎么更新;这就好像是一支笔,它可以写字,但是如果没有人调用它,它就不会写字。

而存储引擎的接口由谁来调用呢?

没错!就是执行器。

执行器根据查询优化器选出来的最优方案,按照步骤调用存储引擎供给的接口。

image.png