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)


相关推荐
PengShuaiD536 分钟前
【数据库维护】如何解决Clickhouse数据库Too many parts报错
数据库·clickhouse
TechNomad1 小时前
C++访问MySQL数据库
数据库·c++·mysql
数据的世界012 小时前
Deepin(Linux)安装MySQL指南
数据库·mysql
Jack魏2 小时前
Linux MySQL 8.0.29 忽略表名大小写配置
linux·mysql·mysql8·mysql常见问题
Warren983 小时前
Springboot中分析SQL性能的两种方式
java·spring boot·后端·sql·mysql·intellij-idea
左灯右行的爱情3 小时前
Redis-事务
数据库·redis·bootstrap
V1ncent Chen3 小时前
MySQL 插入更新语句(insert…on duplicate key update语句 )
数据库·sql·mysql
web150850966413 小时前
给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示
数据库·sql·oracle
qwy7152292581634 小时前
20-R 绘图 - 饼图
开发语言·数据库·r语言
Dreams°1234 小时前
【透过 C++ 实现数据结构:链表、数组、树和图蕴含的逻辑深度解析】
开发语言·数据结构·c++·mysql