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: 处理脏页的刷新操作。