具体过程总结
- MySQL连接器:MySQL客户端与MySQL服务器端进行连接TCP连接,连接器校验用户名,密码,获取用户权限,传输SQL语句
- 查询缓存:1.8以前需要查询缓存,Key-Value, Key:SQL语句、Value:缓存的查询结果,如果缓存命中,直接返回Value,否则继续执行后面的步骤。
注意:每次更新表,必然清空与该表相关的缓存
- SQL分析:
- 词法分析:分析出该SQL的类型,表,字段,where条件
- 语法分析:分析SQL语句是否符合MySQL以及该服务器版本所对应的语法
- SQL执行:
- 预处理:查询表以及字段是否存在,
*
替换为 具体表字段 - 优化器优化:选择优化方案,制定执行计划
- 执行SQL:根据执行方案执行,与存储引擎交互(调用存储引擎提供的接口)。循环获取存储引擎中的记录,每一次从存储引擎中取出一条数据,就判断是否数据是否符合条件,有效直接返回给客户端,无效则丢弃,然后再去获取下一条数据,直到存储引擎给出查询结束信息,退出循环
- 预处理:查询表以及字段是否存在,