由图中可以看出,系统数据库和⽤户⾃定义数据库的存放路径相同。数据库⽬录中主要存放相应的数据库对象(图中箭头指向的为 test 数据库⽬录中存放的⽂件 )。对 Data ⽬录中的⽂件说明如下:mysql、performance_schema、sakila、sys 和 world 是系统数据
库,information_schema 数据库⽐较特殊,这⾥没有相应的数据库⽬录。
test 是⽤户⾃定义的数据库,也就是⽤户⾃⼰创建的数据库。
autof:MySQL 服务器的选项⽂件,⽤于存储 server-uuid 的值。server-uuid 与 server-id ⼀样,⽤于标识 MySQL 实例在集中的唯⼀性。
ib_logfile0、ib_logfile1 是⽀持事务性引擎的 redo ⽇志⽂件
ibdata1 为共享表空间(系统表空间)。如果采⽤ InnoDB 引擎,默认⼤⼩为 10M 。
ibtmp1 为存储临时对象的空间,⽐如临时表对象等。
数据⽬录⾥可能还有:MySQL 服务器的进程 ID(PID)⽂件。
MySQL 服务器所⽣成的状态和⽇志⽂件。
DES 密钥⽂件或服务器的 SSL 证书。
3. 数据库⽬录
数据库实际是⼀个⽬录,每个⽬录都保存着相应数据库中的表以及表数据。下⾯我们以 test 数据库为例讲解⽬录中存放的⽂件。test 数据库中有如下⼏张数据表:+-------------------+| Tables_in_test |+-------------------+| tb_student || tb_student_course ||
tb_students_info || tb_usertest |+-------------------+
对 test 数据库⽬录中的⽂件说明如下:
1)db.opt
⽤来保存数据库的配置信息,⽐如该库的默认字符集编码和字符集排序规则。如果你创建数据库时指定了字符集和排序规则,后续创建的表没有指定字符集和排序规则,那么该表将采⽤ db.opt ⽂件中指定的属性。对于 InnoDB 表,如果是独⽴的表空间,数据库中的表结构以及数据都存储在数据库的路径下(⽽不是在共享表空间 ibdata1 ⽂件中)。但是数据中的其他对象,包括数据被修改之后,事务提交之间的版本信息,仍然存储在共享表空间的 ibdata1 ⽂件中。
2).frm
在 MySQL 中建⽴任何⼀张数据表,其对应的数据库⽬录下都会有该表的 .frm ⽂件。.frm⽂件⽤来保存每个数据表的元数据(meta)和表结构等信息。数据库崩溃时,可以⽤ .frm ⽂件恢复表结构。.frm ⽂件跟存储引擎⽆关,任何存储引擎的数据表都有 .frm ⽂件,命名⽅式为表名.frm,如 users.frm。MySQL 8.0 版本开始,frm ⽂件被取消,MySQL 把⽂件中的数据都写到了系统表空间。通过利⽤ InnoDB
存储引擎来实现表 DDL 语句操作的原⼦性(在之前版本中是⽆法实现表 DDL 语句操作的原⼦性的,如 TRUNCATE ⽆法回滚)。
3).MYD和.MYI.MYD理解为 My Data,⽤于存放 MyISAM 表的数据。
.MYI理解为 My Index,主要存放 MyISAM 表的索引及相关信息。
4).ibd
mysql下载出现installer对于 InnoDB 存储引擎的数据表,⼀个表对应两个⽂件,⼀个是*.frm,存储表结构信息;⼀个是*.ibd,存储表中数据。
5).ibd和.ibdata
.
ibd 和 .ibdata 都是专属于 InnoDB 存储引擎的数据库⽂件。当采⽤共享表空间时,所有 InnoDB 表的数据均存放在 .ibdata 中。所以当表越来越多时,这个⽂件会变得很⼤。相对应的 .ibd 就是采⽤独享表空间时 InnoDB 表的数据⽂件。当然,就算开启了独享表空间,ibdata ⽂件也会越来越⼤,因为这个⽂件⾥还存储了:变更缓冲区
双写缓冲区
撤销⽇志
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论