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)


相关推荐
Yeats_Liao2 分钟前
时序数据库系列(三):InfluxDB数据写入Line Protocol详解
数据库·后端·时序数据库
天地之于壹炁兮29 分钟前
编程I/O入门指南:核心操作全解析
数据库·windows·microsoft
切糕师学AI37 分钟前
SQL中的函数索引/表达式索引
数据库·sql·mysql·postgresql·oracle
武子康1 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
S_h_a_1 小时前
八股-Mysql 基础篇(1)
数据库·mysql
Dxy12393102161 小时前
MySQL的GROUP_CONCAT函数详解
数据库·mysql
编啊编程啊程1 小时前
【029】智能停车计费系统
java·数据库·spring boot·spring·spring cloud·kafka
Leon-Ning Liu2 小时前
Oracle数据库常用视图:dba_datapump_jobs
数据库·oracle·dba
数据库生产实战3 小时前
Oracle 19C RAC下TRUNCATE TABLE的REUSE STORAGE选项作用和风险浅析!
数据库·oracle
小白银子3 小时前
零基础从头教学Linux(Day 60)
linux·数据库·mysql·oracle