mysql结构

  1. 连接层

    1. 功能‌:客户端与服务端连接建立,用户名和密码。管理客户端连接、身份验证、权限校验
    2. 核心组件‌:
      1. 连接池(复用连接资源,避免频繁创建销毁)
      2. 线程池(优化并发请求处理)
  2. 服务层
    1. 核心模块‌:
      1. SQL接口‌:接收SQL命令(DML/DDL/存储过程)
      2. 解析器‌:语法/语义分析,生成解析树1
        1. SQL语句SELECT name, age FROM users WHERE id=100 AND status='active'
        2. 输入字符串被拆分为Token序列:

          1. [Keyword:SELECT] [Identifier:name] [Comma:,] [Identifier:age]  
            [Keyword:FROM] [Identifier:users] [Keyword:WHERE]  
            [Identifier:id] [Operator:=] [Number:100]  
            [Keyword:AND] [Identifier:status] [Operator:=] [String:'active']
      3. 优化器‌:生成最优执行计划(如索引选择)
        1. 优化策略

          1. 条件简化‌:移除恒真条件(如WHERE 1=1)或无效表达式‌

          2. 索引下推‌:将过滤条件提前到存储引擎层处理(减少回表)‌

          3. 索引合并‌:对多条件查询合并多个索引扫描结果(需满足特定条件)‌

      4. 查询缓存‌:MySQL 8.0已移除该功能‌
    2. 流程
        A[SQL请求] --> B(SQL接口)
        B --> C(解析器)
        C --> D(优化器)
        D --> E(执行引擎)

       

  3. 存储引擎层(Storage Engine Layer)
    1. 作用‌:负责数据的物理存储与检索
    2. 对比
      1. innodb:支持事务(ACID,原子性,一致性,隔离性,永久性),表级锁行级锁可以并发修改,外键约束。永久存储支持崩溃后自动恢复
      2. myisam:表级锁同一时间仅一个用户修改并发写入受限,不支持事务无法回滚,读写高速。不支持崩溃自动恢复
      3. memory:数据存于内存读写快服务器重新后数据丢失,不支持事务无法回滚,低延迟。
    3. 主流引擎对比‌:
      引擎事务支持崩溃恢复适用场景
      InnoDB 高并发事务处理
      MyISAM 读密集型操作
      Memory 临时数据/缓存
    4. 默认引擎‌:InnoDB(MySQL 5.5.5+)‌
  4. 存储层(File System Layer)
    1. 数据组织‌:
      1. 数据文件(.ibd):表空间存储实际数据
      2. 日志文件:redo/undo日志保障事务安全
    2. 存储单元‌:
      1. 表空间 → 段 → 区 → ‌页(16KB)‌ → 行‌
      2. 页为最小I/O单位,B+树索引基于页管理‌
posted @ 2025-07-25 14:47  zwjvzwj  阅读(9)  评论(0)    收藏  举报