💡 有理|

navyum

园龄:4个月粉丝:0关注:0

01.Mysql逻辑架构

mysql逻辑架构图

图片

MySQL从架构角度可以分为:

  • Server层
    1. 该层实现所有跨存储引擎的功能。e.g. 存储过程、触发器、视图等
    2. 连接器
      • 职责:连接器负责跟客户端建立连接、获取权限、维持和管理连接
      • 查看当前的连接状态: show processlist
      • 连接:
        • 生命周期:一个用户成功建立tcp连接后,该连接生效直到连接断开(修改用户权限,也不会影响已经存在连接的权限)
        • 长连接:连接成功后,多个请求,使用同一个连接
        • 短连接:每次执行完很少的几次查询就断开连接,下次查询再重建
      • MySQL在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开的时候才释放,如果连接长时间不释放,可能导致OOM
    3. 查询缓存(不建议开启):
      • 原理:MySQL拿到一个查询请求后,会先去查询缓存查询。key 是查询的语句,value 是查询的结果。命中直接返回,否则继续后面的执行阶段。
      • 不建议开启查询缓存的原因:
        • 查询缓存失效非常频繁,命中率非常低(只要表有更新,则该表所有查询缓存失效)
        • 除非该表是静态的配置表,改动频率非常低
    4. 分析器(词法、语法分析):
      • 词法分析: 将sql 拆解成单词
      • 语法分析: 根据语法规则判断sql是否满足语法要求
    5. 优化器(优化sql,确定执行方案):
      • 存在多个索引时,决定使用哪个索引
      • 多个表join时,决定各个表的连接顺序
      • 优化器阶段完成后,这个语句的执行方案就确定下来
    6. 执行器(检查表权限,与引擎交互):
      • 先权限检查,检查对这个表 T 有没有执行查询的权限
      • 如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。
    7. 内置函数:
      • 例如:sumdistinct等函数
  • 存储引擎层
    • 插件式设计,存储引擎层负责数据的存储和提取
    • 常见的引擎:
      • InnoDB
      • MyISAM
      • Memory

本文作者:navyum

本文链接:https://www.cnblogs.com/navyum/p/18509407

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   navyum  阅读(1)  评论(0编辑  收藏  举报
//自己上传到博客园的js
点击右上角即可分享
微信分享提示