MySQL 体系结构和存储引擎

时间:2021-04-20 09:05:47

数据库: 物理操作系统文件或其他形式文件类型的集合
实例: MySQL数据库向后台线程以及一个共享内存区组成,共享内存可以被运行的后台线程所共享
MySQL 数据库实例在某统上的表现就是一个进程。

MySQL 体系结构

  • 连接池组件
  • 管理服务和工具组件
  • SQL 接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache ) 组件
  • 插件式存储引擎
  • 物理文件

MySQL 体系结构和存储引擎

从概念上讲
数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合。
数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道

存储引擎是基于袤的,而不是鼓据库

InnoDB 存储引擎

MySQL 体系结构和存储引擎

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

  • InnoDB存储引擎支持事务、行级索引、支持外键、提供一致性非锁定读
  • 将数据存放在逻辑的表空间中
  • 支持用裸设备(row disk) 用来建立其表空间
  • InnoDB通过使用多版本并发控制(MVCC) 来获得高并发性,并且实现了SQL标准的4 种隔离级别,默认为REPEATABLE级别
  • 使用一种被称为next-key locking的策略来避免幻读(Cphantom)现象的产生
  • 提供插入缓冲(insert buffer) 、二次写(double write) 、自适应哈希索引(adaptive hash index)、预读(read ahead )等高性能和高可用的功能
  • 采用聚集(c1ustered) 方式,每张表的存储都是按主键顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB 存储引擎会为每一行生成一个6 字节的ROWID,并以此作为主键。

MylSAM 存储引擎

MySQL 体系结构和存储引擎

在MySQL5.5.8版本之前MyISAM是默认的存储引擎(除Windows版本外)。

  • 擎不支持事务、表锁设计,通常用于只读或以读为主的工作负载,支持全文索引
  • 对于MylSAM 存储引擎表, MySQL数据库只缓存索引文件,数据文件的缓存主由操作系统本身来完成,这与其他使用LRU 算法缓存数据的大部分数据库大不相同
  • MylSAM 存储引擎表由MYD 和MYI 组成, MYD 用来存放数据文件, MYI 用来存放索引文件
  • 在MySQL 5.1.23 版本之前,32/64位操作系统下,缓存索引文件缓冲区最大只能设置为4GB,之后版本的64位系统支持大于4GB的索引缓冲区
  • MySQL 5.0 版本开始, MylSAM 默认支持256TB 的单表数据
CREATE TABLE t (i INT) ENGINE = MYISAM; --指定存储引擎

存储引擎间的比较

MySQL 体系结构和存储引擎

mysql> show engines \G;
*************************** 1. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 8. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 9. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
9 rows in set (0.24 sec)

参考资料

  • 《MySQL技术内幕:InnoDB存储引擎》