美文网首页
2019-05-05MySQL 的数据目录

2019-05-05MySQL 的数据目录

作者: 括儿之家 | 来源:发表于2019-06-17 10:05 被阅读0次

如何确定MySQL中的数据目录

那说了半天,到底MySQL把数据都存到哪个路径下呢?其实数据目录对应着一个系统变量datadir,我们在使用客户端与服务器建立连接之后查看这个系统变量的值就可以了:

查询数据库文件目录

每当我们使用CREATE DATABASE 数据库名语句创建一个数据库的时候,在文件系统上实际发生了什么呢?其实很简单,每个数据库都对应数据目录下的一个子目录,或者说对应一个文件夹,我们每当我们新建一个数据库时,MySQL会帮我们做这两件事儿:

在数据目录下创建一个和数据库名同名的子目录(或者说是文件夹)。

在该与数据库名同名的子目录下创建一个名为db.opt的文件,这个文件中包含了该数据库的各种属性,比方说该数据库的字符集和比较规则是个啥。

InnoDB是如何存储表数据的

InnoDB其实是使用页为基本单位来管理存储空间的,默认的页大小为16KB。

对于InnoDB存储引擎来说,每个索引都对应着一棵B+树,该B+树的每个节点都是一个数据页,数据页之间不必要是物理连续的,因为数据页之间有双向链表来维护着这些页的顺序。

InnoDB的聚簇索引的叶子节点存储了完整的用户记录,也就是所谓的索引即数据,数据即索引。

为了更好的管理这些页,设计InnoDB的大叔们提出了一个表空间或者文件空间(英文名:table space或者file space)的概念,这个表空间是一个抽象的概念,它可以对应文件系统上一个或多个真实文件(不同表空间对应的文件数量可能不同)。每一个表空间可以被划分为很多很多很多个页,我们的表数据就存放在某个表空间下的某些页里。设计InnoDB的大叔将表空间划分为几种不同的类型。

系统表空间(system tablespace)

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

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

[server]

innodb_data_file_path=data1:512M;data2:512M:autoextend

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

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

在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间。使用独立表空间来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:

表名.ibd

比方说假如我们使用了独立表空间去存储xiaohaizi数据库下的test表的话,那么在该表所在数据库对应的xiaohaizi目录下会为test表创建这两个文件:

test.frm

test.ibd

相关文章

  • 2019-05-05MySQL 的数据目录

    如何确定MySQL中的数据目录 那说了半天,到底MySQL把数据都存到哪个路径下呢?其实数据目录对应着一个系统变量...

  • 数据目录

    进入内置储存卡的根目录,可看见一个名为「ygocore」的文件夹,在这里储存了各种数据。如下图所示: ⊙de...

  • PE:导入表定位

    导入表是数据目录中注册的数据类型之一,基描述信息位于数据目录的第2个目录项中。IAT导入函数也是数据目录注册的数据...

  • Mysql InnoDB引擎逻辑存储与MVVC实现

    1,data目录与数据表文件 1)ps aux | grep mysql,找到数据目录如下图,数据目录中的数据库个...

  • 第二周作业-安装部署

    1.为什么数据目录和日志目录需要分开? 数据目录存放数据文件需要随机读写较多,所以把数据目录挂载在SSD上,利用S...

  • InnoDB 表空间(一)

    MySQL 数据目录 如何确定 MySQL 数据目录> SHOW VARIABLES LIKE 'datadir'...

  • Mysql数据目录

    查看数据目录 基本目录 auto.cnf:MySQL 服务器的选项文件,用于存储 server-uuid 的值。s...

  • 2.1docker数据管理

    一:数据拷贝 二:数据卷和使用 数据卷:宿主机的存储目录, 要将目录中的数据和docker容器进行数据共享 三:数...

  • linux入门知识点

    linux目录结构树形结构 / 根目录:所有数据都在此目录下(Linux系统的起点) /dev:存放设备相关数据 ...

  • 2019-05-21——Mongo 安装运行

    1、安装 2、创建数据库目录 MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创...

网友评论

      本文标题:2019-05-05MySQL 的数据目录

      本文链接:https://www.haomeiwen.com/subject/lqrcoqtx.html