一条SQL查询语句的执行流程(MySQL)
第一步:连接器(负责跟客户端建立连接、获取权限、维持和管理连接)
第二步:查询缓存
之前执行过的查询,MySQL以"Key - Value"的形式存在内存(key为SQL,value为结果集);
只要对该表有一个更新,则这个表上的查询缓存都会被清空;
第三步:分析器(词法和语法分析)
词法分析:通过“select”,识别出为查询;通过“T”,识别出表名;通过条件“ID”,识别出ID那一列;等等;
语法分析:如果语法有误,则提示“You have an error in your SQL syntax”;
第四步:优化器
决定用哪个索引;联查表连接顺序;条件执行优先级 ,等等;
第五步:执行器 (执行SQL)
第六步:存储引擎(提供读写接口,供执行器调用并获取结果集)
首先会判断你是否有该权限;
如果命中查询缓存,则会在返回结果的时候进行权限验证;