建立连接

  1. # 连接器通过 TCP 握手与 client 建立连接后验证用户名、密码,验证通过后获取并缓存用户权限
  2. mysql -h 127.0.0.1 -P 3306 -u root -p

SELECT

1. 分析器

  1. hash SQL 语句,查找查询缓存;
  2. 查询缓存中存在时,返回;
  3. 分析 SQL 的词法、语法,判断表、列是否存在;

    2. 优化器

  4. 索引选择;

  5. 存在表关联时,决定表的关联顺序;

    3. 执行器

  • 命中索引
    1. 调用引擎接口,获取第一条满足条件的数据并存入结果集;
    2. 调用引擎接口,获取下一条满足条件的数据并存入结果集;
    3. 重复动作 b,直到没有数据返回;
  • 未命中索引
    1. 调用引擎接口,获取第一行数据,若数据满足条件,存入结果集;
    2. 调用引擎接口,获取下一行数据;
    3. 数据满足条件时,存入结果集;
    4. 重复动作 b,直到没有数据返回;