MySQL的数据目录

it2025-05-15  9

InnoDB、MyISAM这样的存储引擎都是把表存储在文件系统上的,读取数据的时候,存储引擎从文件系统拿数据,写入数据的时候,存储引擎向文件系统写数据。

数据目录

通过SHOW VARIABLES LIKE ‘datadir’ 可以查看MySQL的数据目录,数据目录用于存储MySQL运行过程中产生的数据。

目录的结构

数据库在文件系统中的表示

在数据目录下创建一个和数据库名同名的子目录(或者说是文件夹)在该与数据库名同名的子目录下创建一个名为db.opt的文件,这个文件中包含了该数据库的各种属性,比方说该数据库的字符集和比较规则是个啥。

数据表在文件系统中的表示

表信息分为两种

表结构定义信息表中数据

对于表结构信息,MyISAM和InnoDB这两种存储引擎都是在数据库子目录下建立一个 表名.frm的文件,这个文件是一个二进制格式存储的。

对于表中数据,MyISAM和InnoDB存储方式是不同的

InnoDB存储表中数据

InnoDB以页为基本单位进行管理存储空间每个索引都对应一颗B+树,每个节点都是一个数据也,数据页之间通过双向链表连接,聚簇索引的叶子节点存储了完整的用户记录

为了更好的管理页,提出了表空间的概念,每一个表空间可以划分为很多页。

系统表空间。系统表空间只有一份,表中的所有数据都要存储到这个系统表空间独立表空间。每个表独立建一个独立表空间,对应一个独立表空间文件,表名.ibd。

MyISAM存储表中数据

在MyISAM中的索引全部都是二级索引,那么在它所在数据库对应的xiaohaizi目录下会为test表创建这三个文件: test.frm test.MYD test.MYI

其中test.MYD代表表的数据文件,也就是我们插入的用户记录;test.MYI代表表的索引文件,我们为该表创建的索引都会放到这个文件中。

MySQL中的视图是虚拟的表,所以在存储视图的时候是不需要存储真实的数据的,只需要把它的结构存储起来就行了。和表一样,描述视图结构的文件也会被存储到所属数据库对应的子目录下边,只会存储一个视图名.frm的文件。

MySQL系统数据库简介

mysql:账户和权限等基础信息information_schema:MySQL服务器维护的所有其他数据库的信息performance_schema:保存MySQL服务器运行过程中的一些状态信息sys:通过视图的形式把information_schema和performance_schema结合起来
最新回复(0)