客户端毗连发送的SQL语句,颠末SQL接口后会被分发到解析器,解析器这东西其着实所有语言中都存在,Java、C、Go...等其他语言都有,解析器的作用重要是做词法分析、语义分析、语法树生成...这类工作的。
而解析器这一步的作用重要是为了验证SQL语句是否精确,以及将SQL语句解析成MySQL能看懂的机器码指令。轻微拓展一点大家就明白了,好好比我们编写如下一条SQL:
select * form user;
然后运行会得到如下错误信息:
ERROR 1064 (42000): You have an error in your SQL syntax; check....
在上述SQL中,我们将from写成了form,效果运行时MySQL提示语法错误了,MySQL是如何发现的呢?就是在词法分析阶段,检测到了存在语法错误,因此抛出了对应的错误码及信息。当然,假如SQL精确,则会进行下一步工作,生成MySQL能看懂的实行指令。
优化器