栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL进阶:二、MySQL数据目录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL进阶:二、MySQL数据目录

1. 主要目录结构

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

mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+

该文件夹下的文件如下

root@e6c4aa557f23:/var/lib/mysql# ls
auto.cnf         client-key.pem  ibdata1             private_key.pem  sys
ca-key.pem       ib_buffer_pool  ibtmp1              public_key.pem
ca.pem           ib_logfile0     mysql               server-cert.pem
client-cert.pem  ib_logfile1     performance_schema  server-key.pem
2.数据库和文件系统的关系 2.1 默认数据库

MySQL有四个默认数据库,如下

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
  • mysql

​ MySQL系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息。

  • information_schema

​ MySQL系统自带的数据库,保存着MySQL服务器维护所有其他数据库的信息,比如有哪些表,哪些视图,哪些触发器,哪些列,哪些索引等。这些不是真实用户数据,而是描述信息,也被称为元数据。在系统数据information_schema中提供了一些以innodb_sys开头的表,用于表示内部系统表。

# 表名区分大小写。
mysql> show tables like 'INNODB_SYS%'
    -> ;
+--------------------------------------------+
| Tables_in_information_schema (INNODB_SYS%) |
+--------------------------------------------+
| INNODB_SYS_DATAFILES                       |
| INNODB_SYS_VIRTUAL                         |
| INNODB_SYS_INDEXES                         |
| INNODB_SYS_TABLES                          |
| INNODB_SYS_FIELDS                          |
| INNODB_SYS_TABLESPACES                     |
| INNODB_SYS_FOREIGN_COLS                    |
| INNODB_SYS_COLUMNS                         |
| INNODB_SYS_FOREIGN                         |
| INNODB_SYS_TABLESTATS                      |
+--------------------------------------------+
10 rows in set (0.00 sec)
  • performance_schema

​ MySQL系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以用来监控MySQL服务的各类性能指标。包括最近执行哪些语句,执行过程中每个阶段花费的时间,内存的使用情况等。

  • sys

​ MySQL系统自带的数据库,主要是通过视图的形式把information_schema和performance_schema结合起来,帮助开发人员监控MySQL的性能。

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

数据库目录内容如下:

root@e6c4aa557f23:/var/lib/mysql# cd /var/lib/mysql
root@e6c4aa557f23:/var/lib/mysql# ls
auto.cnf         client-key.pem  ibdata1             private_key.pem  sys
ca-key.pem       ib_buffer_pool  ibtmp1              public_key.pem
ca.pem           ib_logfile0     mysql               server-cert.pem
client-cert.pem  ib_logfile1     performance_schema  server-key.pem

这个数据目录下的文件和子目录比较多,除了information_schema这个系统数据库外,其他的数据库在数据目录下都有对应的子目录。

以自定义的数据库test01为例:

root@e6c4aa557f23:/var/lib/mysql/test01# ls
db.opt  human.frm  human.ibd

包括有三个文件

  • opt文件: MySQL5.7 中会在每个数据库的目录下生成 db.opt 文件用于保存数据库的相关配置。比如:字符集、比较规则。而MySQL8.0不再提供db.opt文件。
  • **frm文件:**用于描述表结构的文件。.frm文件的格式在不同的平台都是一样的。是以二进制的形式存储的,直接打开是乱码。
  • ibd文件:
    • **系统表空间:**默认情况下,InnoDB会在数据库目录下创建一个名为ibdata1、大小12M的文件,即为系统表空间在文件系统上的表示。该文件是一个自扩展文件,容量不足会自己扩展。
    • **独立表空间:**从MySQL5.6.6开始,InnoDB不再把表数据存储到系统表空间,而实为每个表建立独立表空间。而这个独立表空间对应的文件就是.ibd文件。其中存储了对应的表中的数据和索引

我们可以自己指定使用 系统表空间 还是 独立表空间 来存储数据,这个功能由启动参数 innodb_file_per_table 控制,比如说我们想将表数据都存储到 系统表空间 时,可以在启动 MySQL服务器的时候这样配置:

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

默认情况

mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    | # ON表示使用独立表空间
+-----------------------+-------+
1 row in set (0.00 sec)

MySQL 8.0将ibd文件和frm文件合并,只有一个ibd文件,并且不再提供db.opt文件,其中的字符集、比较规则信息也放在ibd文件中。

2.3 MyISAM的存储模式 2.3.1表结构

MyISAM和InnoDB一模一样,也是在数据目录下对应的数据库子目录下创建一个专门描述表结构的文件,即表名.frm。

2.3.2 数据和索引

MyISAM中索引全都是二级索引,该存储引擎的数据和索引分开存放。所以在文件系统中也使用了不同的文件来存储数据文件和索引文件,同时表数据都放在对应的数据库子目录下。

test.frm 存储表结构
test.MYD 存储数据 (MYData)
test.MYI 存储索引 (MYIndex)

过程中使用的版本为MySQL5.7.36
参考资料: 尚硅谷MySQL2022–宋红康

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号