一、mysql架构图
二、server层
1.连接器
在执行sql之前,客户端需要对mysql建立连接,在经过经典的tcp握手建立连接后,连接器开始验证身份 ,此时需要输入用户名密码,然后登陆成功。如果此时root修改了当前用户的权限,则不会立刻生效,因为用户在建立连接的时候已经查询到了之前的权限,当用户下一次登录时才会获取到修改后的权限信息。另外,当客户端与mysql在默认的8小时没有发送请求的话,那么连接就会断开,我们可以通过url设置自动重连或者修改这个默认时间大小的配置。
2.分析器
mysql执行语句前,需要验证我们输入的sql是否正确,那么就是在分析器中完成的,mysql会对sql进行词法分析和语法分析,这两种分析是融合在一起完成的。
3.优化器
当我们的sql输入正确时,优化器会根据当前table中的索引,为我们选择合适的索引或者表的连接顺序。
4.执行器
最后就是执行的阶段,在执行之前,mysql会判断当前用户对表t的权限,如果权限不足就会报错。如果有权限,那么就使用对应的存储引擎提供的接口去查询我们所需要的数据。