美文网首页程序员
mysql层次结构

mysql层次结构

作者: mafa1993 | 来源:发表于2020-05-11 21:49 被阅读0次

    mysql大体结构

    1. 连接层,通过sock进行通信,提供api供客户端使用
    2. sql层,解析,优化sql语句,选择最优执行方案
    3. 存储引擎 innodb myisam
    • 客户端
    • 服务端
      • 连接线程,连接层,主要用来管理mysql对于程序连接
      • 优化器+解析器+查询缓存-》sql层,处理优化sql语句,指定执行计划
      • 存储引擎接口,获取存储引擎中的数据
      • 核心api:主要io,字符串处理,内存管理
    • 存储引擎,存储用户记录的信息

    连接层

    1. 连接后进行用户名密码校验,如果异常,返回并抛出异常,show variables like “%max_connections%”; mysql最大连接数
      • 最大连接数100,1000访问,会出现短暂的延迟,但不会阻塞
      • show processlist 查看连接状况
    2. 验证后,会分配一个线程进行处理
    3. 查询权限
    4. 返回连接id

    sql层

    1. sql层接口接收sql语句
    2. 判断sql语句类型
      • dml update select insert
      • ddl alter
      • rep主从相关
      • 状态查询,参数查询 show status等
    3. 如果为query,判断是否开启了缓存,如果开启并命中,返回数据
    4. 没有命中缓存,使用解析器对sql解析,解析成令牌(词法分析和语法分析)
    5. 语法分析,根据令牌进行组装,组装成数据结构,生成抽象语法树
    6. 优化器,根据得到的解析树选择合适的执行计划
      • 获取表结构(字段,字段类型,索引,存储位置)获取要查询表的信息,join的话就是多个表
      • 根据解析树进行条件过滤,会过滤掉一些没有意义的查询如1=1,对常量表达式转化成常量,调整查询结构,分析索引信息
      • 判断查询计划
      • 如何执行性能是最优方案,方案并不一定正确
    7. 查询缓存,8.0开始逐步删除查询缓存,8.1正式删除,因为查询缓存存在问题

    存储引擎

    1. 提供存储引擎接口获取磁盘数据

    相关文章

      网友评论

        本文标题:mysql层次结构

        本文链接:https://www.haomeiwen.com/subject/edzpnhtx.html