1.缓存
MySQL 的缓存默认是关闭的,8.0直接去掉了缓存模块
show variables like "query_cache%"
2.语法解析
从这个最简单的sql语句说起
select name from user_info where id = 1; and age>20
解析树 select_lex
任何数据库的中间件,比如 Mycat,Sharding-JDBC(用到了 Druid Parser),都必须要有词法和语法分析功能,在市面上也有很多的开源的词法解析的工具(比如 LEX,Yacc)。
3. 预处理
解析 SQL 的环节里面有个预处理器。 它会检查生成的解析树,解决解析器无法解析的语义。比如,它会检查表和列名是否存在,检查名字和别名,保证没有歧义。 预处理之后得到一个新的解析树。