MySQL的架构
MySQl基础层
首先我们来看一下MySQl的架构图
可以看出MySQL的架构主要分为三个层次,
第一层的是客户端client,我们用来连接数据库
第二层的是server层,
第三层是存储引擎的层次,
SQL执行流程
首先客户端向mysqlserver发送一个连接请求,意味着mysqlserver这边需要提供连接,我们把提供连接的叫做连接器。连接器主要做一些权限认证,用户名,密码匹配等等校验。
验证成功之后,分析器会把要执行的SQL语句进行切分,(按照select from where 等关键字),进行语法分析,这两块最终会编程一个叫做AST抽象语法树。这个是有分析器完成的。
有了ast之后,会走到优化器。(mysql中的自带的优化,会对执行顺序进行一些优化)
实际中的优化有两种方式,一种是基于规则的RBO优化,一种是基于成本的CBO优化。
最后就会来到执行器,执行器就是我们用来和执行引擎进行数据交互。
优化的最终还是归结到IO问题上:
1.减少IO的量
2.减少IO的次数