前端开发MySQL 数据库之数据引擎

来源:这里教程网 时间:2026-03-01 16:15:41 作者:

在 MySQL5.1 的中文文档资料里,有如下的一张 MySQL 插件式存储引擎的体系结构图,通过这张图, 我们能很好的了解 MySQL 的整体架构。

 从以上的架构图我们可以看出,最上面的%20Connectors%20表示客户端,客户端就是一些具体的链接协议;下面的%20MySQL%20Server%20表示服务端, 前端培训其中包括%20Connection%20Pool%20、SQL%20Interface、Parser、Optimizer、 Storage%20Engines、文件系统(Files、Logs)以及管理服务。存储引擎( Storage%20Engines)的主要工作就是与文件系统进行数据交互,比如我们常用的%20InnoDB%20引擎。MySQL%20的存储引擎是插件式的,应用程序无需针对不同的存储引擎进行对应的编码操作,MySQL%20提供了一套标准的%20API%20标准,MySQL%20服务会自动处理不同的存储引擎与文件系统的读写,用户层面没有感知。存储引擎是指定在表上面的,每个表都可以指定其自己的引擎;不管使用什么存储引擎,都会产生一个后缀为%20frm%20的文件,改用来定义表结构。【关注尚硅谷,轻松学IT】 1、MySQL%20的存储引擎介绍主要有以下%205%20种存储引擎:

  2、MyISAM%20与%20InnoDB%20引擎的区别Mysql5.5%20版本之前默认的存储引擎就是%20MyISAM%20存储引擎,MySQL%20中比较多的系统表使用%20MyISAM%20存储引擎,系统临时表也会用到%20MyISAM%20存储引擎,但是在%20Mysql5.5%20之后默认的存储引擎就是%20InnoDB%20存储引擎了。原因主要是%20MyISAM%20是表级锁定,限制了数据库读/写的性能;另外一个原因%20MyISAM%20不支持事务,基于以上两点,InnoDB%20引擎使用的非常广泛。MyISAM%20与%20InnoDB%20引擎主要有以下%206个方面的区别:

  3、数据文件存放路径

-- 查看数据存储的文件路径
show variables like 'datadir';
  4、InnoDB 逻辑存储结构MySQL 的存储结构分为 5 级:表空间、段、簇、页、行。 表空间(TableSpace):表空间可以看做是 InnoDB 存储引擎逻辑结构的存储结构的大容器,所有的数据都存放在表空间中,分为:系统表空间、独占表空间、通用表空间、临时表空间、Undo 表空间。 段(Segment):表空间是由各个段组成的,分为:数据段、索引段、回滚段等,段是一个逻辑的概念,一个 .ibd 文件(独立表空间文件)里面会由很多个段组成。创建一个索引会创建两个段,一个是索引段(leaf node segment),索引段管理非叶子节点的关键字和引用数据;一个是数据段:(non-leaf node segment),数据段管理叶子节点的行记录数据。 区/簇(extents):一个段由很多的簇(也可以叫区)组成,每个区的大小是 1MB(64 个连续的页),每一个段至少会有一个簇,一个段所管理的空间大小是无限的,可以一直扩展下去,但是扩展的最小单位就是簇。 页/块(page):为了高效管理物理空间,簇是由连续的页组成的空间,一个簇中有 64 个连续的页(1MB/16 KB = 64),这些页面在物理上和逻辑上都是连续的。页是 InnoDB 存储引擎磁盘管理的最小单位,每个页默认 16KB,通过 innodbpagesize 设置。 行(Row):MySQL5.7 以后默认的行格式(Rowformat)为:DYNAMIC,Rowformat 可在创建数据表时指定,大家了解有这么一回事就可以了。文件系统中,操作系统和内存进行文件交换,最小的单位也是页,不过文件系统的页默认是 4KB,MySQL 数据库的页默认是 16KB,目的是为了一次 IO 操作可以获取更多的数据。 原创作者:dreamcatcher

相关推荐