1.不变的原则:网络连接必须用线程去处理
现在MySQL的连接池中的某个连接接收到了网络的请求,假如这个请求就是一句sql语句,那么谁从这个连接中去监听网络请求以及谁从这个网络请求中读取数据?答案是线程,一个网络连接必须分配给一个线程去处理,由这个线程去监听以及读取请求
2.sql接口:负责处理接收到的sql语句
线程将从sql从网络连接中读取出来之后,我们需要去执行这句sql语句,但是如果是去完成底层的增删改查,这项任务会比较复杂,所以MySQL给我们提供了一个sql接口(专门执行我们发送给MySQL的sql语句)以便帮助我们去执行sql语句
3.查询解析器:让MySQL读懂我们写的是个啥
MySQL也是一个由程序编写的软件,我们书写的sql语句其实就是根据sql规范写出来的一些规范语句,那么要如何让MySQL读懂我们写的sql语句呢?那就是使用解析器去解析我们的sql语句,所谓的查询解析器就是解析我们根据sql规范所编写的sql语句,让MySQL知道我们想干什么
4.查询优化器:选择最优的方法执行sql语句
一句sql select name,age from users where id= 1该如何去执行?
1.先定位到id等于1的这行数据然后取出name跟age的属性
2.将整个表含有name跟age的行全部检索出来,然后看哪个id等于1
上面两个例子明显第一个会比较好,那么谁来选择呢?那就是优化器干的事情了,我们所书写的sql无论是简单还是复杂sql,都会生成查询路径树,然后选择一条最优的路径进行查询操作
5.存储引擎:真正执行sql语句
最后一步就是将查询优化过的路径交给存储引擎去真正执行sql语句,那么我们的数据是存放在哪里?内存还是磁盘呢?这就需要问问存储引擎了
存储引擎:其实就是执行sql语句的,会按照一定的步骤去查询内存的缓存数据更新磁盘数据以及查询磁盘数据等等
6.执行器:根据计划调用存储引擎中的接口
根据计划?根据什么计划>是根据查询优化器的那条最优执行sql的计划
就是去根据优化器生成的一套计划区域不停的调用存储引擎的接口完成sql语句,大致就要不停地更新或者提取一些数据出来