简单说一下我理解的MySql的架构以及sql语句的执行流程
一、在讲这个问题之前,我想先简单说一下我理解的MySql的架构以及sql语句的执行流程。
如图1:
① 第一步:验证用户信息
这一步对于开发者来说,就是用配置好的数据库用户名与密码去连接数据库。比如,Java的JDBC,这里直接用SpringBoot的配置来举例
在每次查询之前都会校验查询者的用户身份。
② 第二步:连接/线程处理器会管理对于Mysql的所有查询请求。
即先查询缓存,Mysql提供了一种缓存类型,会缓存整个SELECT查询结果。Mysql查询缓存保存查询返回的完整结果。刚接触这个机制,还以为这是在抢Mybatis的饭碗。。。
后来才了解到,Mysql的缓存机制是一种key(sql查询语句),value(返回的数据集)的形式。只有当前sql查询语句与缓存的key完全相同时,才会触发缓存机制,当缓存数据的来源表有变动时,缓存才会失效;而Mybatis是后台服务器的数据缓存,基于SqlSession和SqlSessionFactory