程序员

mysql层次结构

2020-05-11  本文已影响0人  mafa1993

mysql大体结构

  1. 连接层,通过sock进行通信,提供api供客户端使用
  2. sql层,解析,优化sql语句,选择最优执行方案
  3. 存储引擎 innodb myisam

连接层

  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. 提供存储引擎接口获取磁盘数据
上一篇 下一篇

猜你喜欢

热点阅读