1、网络连接让工作线程去具体执行
一般,网络服务器会分配一个线程或线程池去处理网络连接,把网络连接中读取出来的数据交给另外的线程或线程池处理。如下图所示:
当MySQL内部的工作线程从一个网络连接中读取一个SQL语句后,此时会如何处理这个SQL呢?
2、SQL接口,处理接收到的SQL语句
此时工作线程会把接收到的SQL语句交给一个叫SQL接口的组件执行。SQL接口(SQL interface),是一套执行SQL语句的接口,专门用于执行我们发送给MySQL的那些增删改查的SQL语句。
3、查询解析器:让MySQL读懂你的SQL
接下来SQL接口怎么处理SQL语句呢?MySQL必须理解你的SQL语法,才可以去执行,要理解SQL语法,就要靠查询解析器了。
查询解析器(parser),就是负责对SQL语句进行解析的。按照SQL语法,对我们按照SQL语法编写的SQL语句进行解析。比如对select name, age from user where id = 1这个语句。
1、我们要从user表里查询数据;
2、查询"id"字段值等于1的那行语句;
3、对查出来的那行数据提取name,age两个字段;
4、查询优化器:选择最优的查询路径
通过SQL解析器解析SQL语句,知道要干什么,那么怎么干性能最高呢?
比如,上面那个查询语句:select name, age from user where id = 1
可以有多种查询方式:
1、直接根据id定位到一行数据,然后从中获取name, age;
2、从表中把所有的id,name, age查出来,根据id过滤出来想要的数据;
上面是两种SQL查询方式(不代表MySQL的实现方式),两种查询方式都可以实现目标,哪种性能更好呢?
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
十冲一波!
[外链图片转存中…(img-vfhUJA48-1720118126864)]
[外链图片转存中…(img-g5Jjrd7Q-1720118126864)]