查看 MySQL 8 目录结构

find / -name mysql

1、MySQL 数据库文件的存放路径:/var/lib/mysql/

(1)查看

SHOW variables LIKE 'datadir';

2、相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump 等命令)和 /usr/sbin

3、配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如 my.cnf)

 

数据库和文件系统的关系

1、查看默认数据库

SHOW DATABASES;

(1)mysql:存储 MySQL 用户账户和权限信息,存储过程、事件的定义信息,运行过程中产生的日志信息,帮助信息以及时区信息等

(2)information_schema:保存 MySQL 服务器维护的所有其他数据库的信息 ,如:表、视图、触发器、列、索引,这些信息并不是真实的用户数据,而是一些描述性信息,称为元数据,提供一些以 innodb_sys 开头的表,用于表示内部系统表

(3)performance_schema:保存 MySQL 服务器运行过程中的一些状态信息,可以监控 MySQL 服务的各类性能指标,包括统计最近执行哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息

(4)sys:通过视图形式把 information_schema 和 performance_schema 结合起来,用以监控 MySQL 的技术性能

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

(1)默认数据目录:/var/lib/mysql

(2)除系统数据库 information_schema 外,其他数据库在数据目录下都有对应的子目录

3、视图在文件系统中的表示

(1)只会存储一个文件:视图名.frm,和表一样,描述视图结构的文件,被存储到所属数据库对应的子目录下

(2)只有对应的 .frm 文件,没有 .ibd 文件,即视图只存储结构,不存储数据

4、表在文件系统中的表示(以下)

 

InnoDB 存储引擎模式

1、表结构

(1)为了保存表结构, InnoDB 在数据目录下,对应的数据库子目录下,创建一个专门用于描述表结构的文件

(2)文件名:表名.frm

(3)frm 文件格式在不同的平台上都是相同的,以二进制格式存储

2、表中数据和索引

3、系统表空间

(1)system tablespace

(2)默认情况下,InnoDB 在数据目录下创建一个名为 ibdata1 、大小为 12M 文件,该文件对应系统表空间在文件系统上的表示,该文件是自扩展文件,自动增加大小

(3)修改系统表空间对应文件系统上多个实际文件,或修改文件名、大小

[server]
innodb_data_file_path=data1:512M;data2:512M:autoextend

4、独立表空间

(1)file-per-table tablespace

(2)在 MySQL 5.6.6 及之后版本中,InnoDB 并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,即创建多少个表,就有多少个独立表空间

(3)使用独立表空间来存储表数据,会在该表所属数据库对应的子目录下,创建一个表示该独立表空间的文件

(4)文件名和表名相同,添加一个 .ibd 的扩展名,完整的文件名称

表名.ibd

5、系统表空间与独立表空间的设置

(1)可以指定使用系统表空间,或独立表空间存储数据,由启动参数 innodb_file_per_table 控制

(2)启动 MySQL 服务器时配置

[server]
#0:代表使用系统表空间;1:代表使用独立表空间
innodb_file_per_table=0

6、其他类型的表空间,如:通用表空间(general tablespace)、临时表空间(temporary tablespace)等

 

 MyISAM 存储引擎模式

1、表结构

(1)与 InnoDB 相同,在数据目录下,对应的数据库子目录下,创建一个专门用于描述表结构的文件

表名.frm

2、表中数据和索引

(1)在 MyISAM 中的索引全为二级索引,该存储引擎的数据和索引是分开存放

(2)在文件系统中,使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下

#存储数据(MYData)
test.MYD
#存储索引(MYIndex)
test.MYI

 

例:数据库 a,表 b

1、如果表 b 采用 InnoDB ,data\a 中会产生 1 个或 2 个文件

(1)b.frm:描述表结构文件,字段长度等

(2)如果采用系统表空间模式,数据信息和索引信息都存储在 ibdata1 中

(3)如果采用独立表空间模式,data\a 中还会产生 b.ibd 文件,存储数据信息和索引信息

(4)MySQL 5.7 中,在 data/a 目录下,生成 db.opt 文件用于保存数据库的相关配置,如:字符集、比较规则,而 MySQL 8.0 不再提供 db.opt 文件

(5)MySQL 8.0 中不再单独提供 b.frm,而是合并在 b.ibd 文件中

2、如果表 b 采用 MyISAM,data\a 中会产生 3 个文件

(1)MySQL 5.7 中 b.frm:描述表结构文件,字段长度等

(2)MySQL 8.0 中 b.xxx.sdi:描述表结构文件,字段长度等

(3)如果采用独立表存储模式,b.MYD(MYData):数据信息文件,存储数据信息;b.MYI(MYIndex):存放索引信息文件