mysql 08 数据的家-MySQL的数据目录

01 数据库和文件系统的关系

像 InnoDB 、 MyISAM 这样的存储引擎都是把表存储在文件系统上的。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们,当我们想写入数据的时候,这些存储引擎会把这些数据又写回文件系统。

02.MySQL数据目录

MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为 数据目录 ,我们下边就要详细唠唠这个目录下具体都有哪些重要的东西。

2.1 如何确定MySQL中的数据目录

2.2 数据目录的结构

MySQL 在运行过程中都会产生哪些数据呢?当然会包含我们创建的数据库、表、视图和触发器吧啦吧啦的用户数据,除了这些用户数据,为了程序更好的运行, MySQL 也会创建一些其他的额外数据,我们接下来细细的品味一下这个 数据目录 下的内容。

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



2.2.2 表在文件系统中的表示

2.2.2.1 表结构

2.2.2.2 表数据

01.系统表空间(system tablespace)

这个所谓的 系统表空间 可以对应文件系统上一个或多个实际的文件,默认情况下, InnoDB 会在 数据目录 下创建一个名为 ibdata1 (在你的数据目录下找找看有木有)、大小为 12M 的文件,这个文件就是对应的 系统表空间 在文件系自扩展文件 ,也就是当不够用的时候它会自己增加文件大小~

当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的 ibdata1 这个文件名难听,那可以在 MySQL 启动时配置对应的文件路径以及它们的大小,比如我们这样修改一下配置文件:

bash 复制代码
[server]
innodb_data_file_path=data1:512M;data2:512M:autoextend

这样在 MySQL 启动之后就会创建这两个512M大小的文件作为 系统表空间 ,其中的 autoextend 表明这两个文件如果不够用会自动扩展 data2 文件的大小。

我们也可以把 系统表空间 对应的文件路径不配置到 数据目录 下,甚至可以配置到单独的磁盘分区上,涉及到的启动参数就是 innodb_data_file_path 和 innodb_data_home_dir ,具体的配置逻辑挺绕的,我们这就不多唠叨了,知道改哪个参数可以修改 系统表空间 对应的文件,有需要的时候到官方文档里一查就好了。

02.独立表空间(file-per-table tablespace)


相关推荐
黑色的白兔No19 分钟前
deepin 25安装mysql
数据库·mysql·debian
cc57250265324 分钟前
2026 秋招采购数据分析校招 JD、面试真题与项目准备|2027 届求职复盘
数据库
程序员清风38 分钟前
Python 操作 MySQL、Redis 与消息队列的完整实践
redis·python·mysql
风哥2号2 小时前
数据库教程FGMT28‑Windows‑MySQL5.7‑8.0‑8.4-9.7安装配置
数据库·mysql
2601_962218619 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
李高钢10 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
toooooop811 小时前
MySQL source导入实战:踩坑记,phpMyAdmin 502、source导入巨慢问题解决
mysql
yuzhiboyouye12 小时前
那xml对应的sql语法,列举一下
xml·数据库·sql
. . . . .12 小时前
乐观锁 vs 悲观锁
数据库·sql
Leo.yuan12 小时前
2026年多数据库实时同步的四种架构方案及工具推荐
数据库·架构