### 1. MySQL8的主要目录结构
find / -name mysql
#### 1.1、数据库文件的存放路径
show variables like 'datadir'; # /var/lib/mysql/
#### 1.2、相关命令目录
相关命令目录:/usr/bin 和/usr/sbin。
#### 1.3、配置文件目录
配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)
### 2. 数据库和文件系统的关系
#### 2.1、表在文件系统中的表示
##### 2.3.1 InnoDB存储引擎模式
1. 表结构
为了保存表结构,`InnoDB`在`数据目录`下对应的数据库子目录下创建了一个专门用于`描述表结构的文件`
表名.frm
2. 表中数据和索引
2.1 系统表空间(system tablespace)
默认情况下,InnoDB会在数据目录下创建一个名为`ibdata1`、大小为`12M`的`自拓展`文件,这个文件就是对应的`系统表空间`在文件系统上的表示。
2.2 独立表空间(file-per-table tablespace)
在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为`每一个表建立一个独立表空间`,也就是说我们创建了多少个表,就有多少个独立表空间。使用`独立表空间`来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同。
表名.ibd
> MySQL8.0中不再单独提供`表名.frm`,而是合并在`表名.ibd`文件中。
2.3 系统表空间与独立表空间的设置
我们可以自己指定使用`系统表空间`还是`独立表空间`来存储数据,这个功能由启动参数`innodb_file_per_table`控制
[server]
innodb_file_per_table=0 # 0:代表使用系统表空间; 1:代表使用独立表空间
2.4 其他类型的表空间
随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用表空间(general tablespace)、临时表空间(temporary tablespace)等。
##### 2.3.2 MyISAM存储引擎模式
1. 表结构
- 在存储表结构方面, MyISAM 和 InnoDB 一样,也是在`数据目录`下对应的数据库子目录下创建了一个专门用于描述表结构的文件
表名.frm
2. 表中数据和索引
- 在MyISAM中的索引全部都是`二级索引`,该存储引擎的`数据和索引是分开存放`的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。
test.frm 存储表结构 #MySQL8.0 改为了 b.xxx.sdi
test.MYD 存储数据 (MYData)
test.MYI 存储索引 (MYIndex
最后修改时间:2022-08-30 08:11:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




