龙空技术网

MySQL 的数据存放在哪个文件?

贵哥说Java创业 103

前言:

而今你们对“mysql储存文件”大致比较注重,小伙伴们都需要学习一些“mysql储存文件”的相关资讯。那么小编也在网络上收集了一些对于“mysql储存文件””的相关内容,希望咱们能喜欢,看官们快快来了解一下吧!

大家都知道 MySQL 的数据都是保存在磁盘的,那具体是保存在哪个文件呢?

MySQL 存储的行为是由存储引擎实现的,MySQL 支持多种存储引擎,不同的存储引擎保存的文件自然也不同。

InnoDB 是常用的存储引擎,也是 MySQL 默认的存储引擎。所以,本文主要以 InnoDB 存储引擎展开讨论。

先来看看 MySQL 数据库的文件存放在哪个目录?

mysql> SHOW VARIABLES LIKE 'datadir';+---------------+-----------------+| Variable_name | Value           |+---------------+-----------------+| datadir       | /var/lib/mysql/ |+---------------+-----------------+1 row in set (0.00 sec)

每创建一个 database(数据库) 都会在 /var/lib/mysql/ 目录里面创建一个以 database 为名的目录,然后保存表结构和表数据的文件都会存放在这个目录里。

比如,这里有一个名为 my_test 的 database,该 database 里有一张名为 t_order 数据库表。

然后,进入 /var/lib/mysql/my_test 目录,看看里面有什么文件?

[root@xiaolin ~]#ls /var/lib/mysql/my_testdb.opt  t_order.frm  t_order.ibd

可以看到,共有三个文件,这三个文件分别代表着:

db.opt,用来存储当前数据库的默认字符集和字符校验规则。t_order.frm ,t_order 的表结构会保存在这个文件。在 MySQL 中建立一张表都会生成一个.frm 文件,该文件是用来保存每个表的元数据信息的,主要包含表结构定义。t_order.ibd,t_order 的表数据会保存在这个文件。表数据既可以存在共享表空间文件(文件名:ibdata1)里,也可以存放在独占表空间文件(文件名:表名字.idb)。这个行为是由参数 innodb_file_per_table 控制的,若设置了参数 innodb_file_per_table 为 1,则会将存储的数据、索引等信息单独存储在一个独占表空间,从 MySQL 5.6.6 版本开始,它的默认值就是 1 了,因此从这个版本之后, MySQL 中每一张表的数据都存放在一个独立的 .idb 文件。

标签: #mysql储存文件 #mysql用于指定数据库文件的保存目录 #mysql保存表保存不了 #数据库的表保存在哪里 #mysql为什么保存不了表中的数据