持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
MySQL一次数据更新的奥秘
MySQL是一个非常常用的数据库,相信大家已经使用它来进行过各种增删改查的操作了,那么你知道MySQL一次数据更新会经历什么过程吗?
今天就让我们一起来探究一下MySQL数据更新的秘密。
从SQL语句谈起
SQL语句是大部分程序员和数据库交互使用的语言。SQL简单明了,就算是业余人士也可以快速看懂、上手。
那么问题来了,MySQL内部也是看SQL的吗?
其实不是MySQL内部是看不懂SQL的。
MySQL开启一个线程,从一个数据库连接中读取到SQL,会将SQL交给SQL接口,解析器最终解析成MySQL内部能懂的形式(语法树)。
经过了解析器之后,就来到了查询优化器,这里是MySQL决定如何执行的选择过程。
你想想,平时你出行之前肯定会先用导航规划一条最优路线的,而这里的查询优化器就相当于MySQL中的导航,它会从众多查找方式中挑出一种它以为最优的方式。
选好了方式,接下来自然就是要按选择的方式执行了。
存储引擎的作用
存储引擎,这个名字听起来很抽象,但是实际上也就那样,它就是用来执行SQL语句的,它可以按照一定的步骤去查询缓存的数据,磁盘的数据,更新等等。
存储引擎具有访问内存和磁盘数据的能力,它还会对外提供接口,供别人调用。虽然存储引擎有这能力,但是也必须需要给别人调用才知道怎么查询,怎么更新;这就好像是一支笔,它可以写字,但是如果没有人调用它,它就不会写字。
而存储引擎的接口由谁来调用呢?
没错!就是执行器。
执行器根据查询优化器选出来的最优方案,按照步骤调用存储引擎供给的接口。