MySQL系列(一) MySQL体系结构概述

  • 1 MySQL 的体系结构

    • 连接池组件
    • 管理服务和工具组件
    • SQL接口组件
    • 查询分析器组件
    • 优化器组件
    • 缓冲组件
    • 插件式存储引擎(体系结构的核心)
    • 物理文件
  • 2 InnoDB 概述

    • InnoDB存储引擎支持事务,设计目标主要面向在线事务处理OLTP的应用,其特点是行锁设计,支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁,5.58后成为默认引擎
    • InnoDB使用MVCC(多版本并发)控制来获得高并发性,并且实现了SQL标准的4种隔离级别
    • InnoDB还提供了插入缓冲,二次写,自适应哈希索引,预读等实用功能
    • InnoDB采用聚集索引的方式,每张表的存储都是按照主键的顺序进行存放
    • 最有效利用以及使用内存的cpu 的存储引擎,好性能,高扩展,高可用
  • 3 其他存储引擎概述

    • MyISAM :面向 OLAP,不支持事务
      • MyISAM不支持事务,表锁设计,支持全文索引,主要面向一些OLAP数据库应用。
      • 缓冲池只缓存索引文件,而不缓冲数据。
    • DNB: 集群存储引擎
      • 集群存储引擎
      • 数据全部放在内存中(5.1后可以在磁盘上存非索引数据),主键查找速度极快并且可以通过添加NDB数据存储节点可以线形提高数据库性能,是高性能高可用的集群系统。
      • 不过NDB的连接操作是在MySQL数据库层完成的,如果解决了这个问题,NDB的的市场是非常巨大的。
    • Memory: 数据存放内存
      • 之前称之为HEAP引擎,将数据存放在内存中,适合存储临时数据的临时表,以及数据仓库中的维度表
      • 使用哈希索引,而不是B+树
      • 并发性较差,存储变长字段是按照定长处理的,比较浪费内存
  • 4 InnoDB 体系结构

    • 多个内存块组成一个内存池,主要功能:
      • 缓存磁盘上的数据
      • 重做日志缓冲
      • 维护所有进程/线程需要访问的内部数据结构
    • 多线程模型
      • Master Thread:核心线程,主要负责将缓存池中数据异步刷新到磁盘
      • IO Thread: 处理IO请求,负责这些IO请求的毁掉函数处理
      • Purge Thread: 回收已经使用并分配的undo(重做日志)页
      • Page Cleaner Thread: 处理脏页的刷新操作。

猜你喜欢

转载自www.cnblogs.com/wang-kai-1994/p/10810364.html