0%

mysql01_基础&体系架构

Mysql体系架构

MySQL由以下几部分组成

  1. 连接池组件
  2. 管理服务和工具组件
  3. SQL接口组件
  4. 查询分析器组件
  5. 优化器组件
  6. 缓冲( Cache)组件
  7. 插件式存储引擎
  8. 物理文件

ps : 存储引擎是基于表的,不是基于数据库

常见的mysql引擎

InnoDB存储引擎

从 MySQL数据库5.5.8版本开始, InnoDB存储引擎是默认的存储引擎。

  1. InnoDB存储引擎支持事务
  2. 其特点是行锁设计、支持外键
  3. InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的四种隔离级别,默认为 REPEATABLE级别。同时使用next-key locking的的略避免幻读问题。
  4. 对于表中数据的存储, InnoDB存储引擎釆用了聚集( clustered)的方式,因此每张表的存储都是按主键的顺序进行存放。

ps 如果没有显式地在表定义时指定主键, InnoDB存储引擎会为每一行生成一个6字节的 ROWID,并以此作为主键。详见mysql03

一旦自增id达到最大值,此时数据继续插入是会报一个主键冲突异常

MyISAM存储引擎

  1. MyIsAM存储引擎不支持事务、表锁设计
  2. 支持全文索引
  3. MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。

ps MyISAM的索引文件和数据文件是分开的,索引是用b+树,叶子节点存的是指向数据的指针

NDB引擎

NDB存储引擎是一个集群存储引擎。

  1. 数据全部放在内存中(从 MySQL5.1版本开始,可以将非索
    引数据放在磁盘上),因此主键查找的速度极快
  2. 并且通过添加NDB数据存储节点( Data Node)可以线性地提高数据库性能,是高可用、高性能的集群系统。

Memory存储引擎

Memory存储引擎将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。 Memory存储引擎默认使用哈希索引。

Maria存储引擎

Maria存储引擎的特点是:

  1. 支持缓存数据和索引文件
  2. 应用了行锁设计,
  3. 提供了MVCC功能
  4. 支持事务和非事务安全的选项
  5. 更好的BLOB字符类型的处理性能