vlambda博客
学习文章列表

【offerMe--数据库必备】“SQL查询之路”

1.序

这个是数据库相对来说底层的东西,所以面试官一般很喜欢问,我记得字节,阿里等大厂的面试官都会问这个,所以今天我们来彻底的学会它。

 

2.简略版本

 


我记得面试官在问到数据库时:“用过数据库吧,奥,用过就行,那用过select语句吗?就比如 select * from student where studentId = 1;这个语句在数据库底层是怎么执行的,可以讲讲吗?”

 

这个时候不要谎,来到我们秀的时间了。如上图,我建议大家脑子里都有一个这样的图,当我们有这样一个图的时候我们就可以很简单直接的把答案说出来。

 

1. 连接器通过连接器判断用户名和密码是否正确,若失败,直接返回用户被拒的错误;否则获取用户权限信息;
2.查询缓存若查询缓存开启则通过sql语句查询缓存中是否有key为当前查询的sql,若存在,直接返回value,结束查询;
3.分析器若缓存无结果返回,那么通过分析器,对sql语句进行解析,若sql语句有误,返回语法错误信息,结束查询;
4.优化器sql语句正常经过分析器后,在优化器确认最终的执行方案,确定是用表中的索引以及表的连接顺序;
5.执行器当到达执行器的时候判断用户对sql中的表有没有权限操作,若没有返回权限不足的错误信息,否则,调用存储引擎提供的数据查询接口查询数据,若缓存开启,则更新缓存,最后将结果返回。


完美答案。

【offerMe--数据库必备】“SQL查询之路”


3.详细版本

当然了,我们不能简单的为了应付面试而这样学习,我们肯定要系统的学习一下吧,于是借鉴下面两张图的讲解我们来学习一下。

 



上面是数据库构成的一个整体,那我们来详细的了解一下它的每一块。


详细内容请点击“阅读全文”进行学习(效果更佳)

详细内容请点击“阅读全文”进行学习(效果更佳)

详细内容请点击“阅读全文”进行学习(效果更佳)