zoukankan      html  css  js  c++  java
  • MySQL架构

    MySQL架构

    一、MySQL架构

    • 连接器——管理连接、权限认证
    • 分析器——词法分析、语法分析(AST)抽象语法树
    • 优化器——执行计划、索引选择
    • 执行器——操作引擎、返回结果
    • 存储引擎——存储数据,提供读写接口

    8.0版本之后,舍弃了查询缓存功能

    二、连接器

    连接器负责跟客户端建立连接,以获得权限、维持和管理连接

    • 用户名密码验证
    • 查询权限信息、分配对应权限
    • 可以使用show processlist查看现在连接
    • 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时

    连接分类:

    • 长连接:建议
    • 短连接

    三、查询缓存

    查询语句的时候,先去查询缓存查看结果,8.0后没有这个组件

    不推荐理由:

    • 查询缓存失效比较频繁,只要表更新,缓存就会清空
    • 缓存对应更新数据命中率比较低

    四、分析器

    • 词法分析:MySQL需要把输入字符串进行识别
    • 语法分析:根据语法规则判断SQL是否满足mysql的语法,如果不符合就会报错“You have an error in your SQL synta”

    五、优化器

    • 在具体执行SQL语句之前要经过优化器进行处理
      • 当表中有多个索引,决定使用哪个索引
      • 当需要多表关联,决定表的连接顺序...等
    • 不同的执行方式对SQL语句执行效率影响很大
      • CBO(Cost-Based Optimization):基于成本的优化
      • RBO(Rule-Based Optimization):基于规则的优化
    日志系统
    5.1.Redo log——innodb存储引擎的日志文件

    发生数据修改的时候,innodb会先卸载redo log中,并更新内存,此时更新完成,redo日志是固定大小的,是循环写的过程

    事务中就是通过redo log进行书写的

    5.2.Undo log——操作数据,先将数据备份

    进行修改数据,先进行备份,之后可以再次进行

    5.3.binlog——记录是逻辑日志

    可备份逻辑日志

    binlog是server层的日志,主要做mysql功能层面的事
    与redo日志区别:
    - 1.redo是innodb独有的, binlog是所有引擎都可以用的
    - 2.redo是物理日志,记录在某页做了什么修改,binlog是逻辑日志,记录是这个语句的原始逻辑
    - 3.redo是循环写的,空间是用完,binlog是可以追加的,不会覆盖之前的日志信息
    
  • 相关阅读:
    DAY 118 ES组合查询
    DAY 117 ES查询
    DAY 116 ES文档操作
    box_sizing
    添加视频
    网页自动刷新
    如何使网页宽度自动适应手机屏幕的宽度?
    存储过程&触发器
    mysql事务
    mysql常用语句
  • 原文地址:https://www.cnblogs.com/littlepage/p/11878149.html
Copyright © 2011-2022 走看看