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)


相关推荐
清水白石0081 小时前
从一个“支付状态不一致“的bug,看大型分布式系统的“隐藏杀机“
java·数据库·bug
Python私教5 小时前
model中能定义字段声明不存储到数据库吗
数据库·oracle
mqiqe8 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
工业甲酰苯胺8 小时前
MySQL 主从复制之多线程复制
android·mysql·adb
BestandW1shEs8 小时前
谈谈Mysql的常见基础问题
数据库·mysql
重生之Java开发工程师8 小时前
MySQL中的CAST类型转换函数
数据库·sql·mysql
教练、我想打篮球8 小时前
66 mysql 的 表自增长锁
数据库·mysql
Ljw...8 小时前
表的操作(MySQL)
数据库·mysql·表的操作
哥谭居民00018 小时前
MySQL的权限管理机制--授权表
数据库