存储引擎文件

2020-05-02  本文已影响0人  lsh的学习笔记

之前的文件都是MySQL数据库本身文件,和存储引擎无关。除了这些文件,每个表存储引擎还有自己独有的文件。包括重做日志文件、表空间文件。

表空间文件

InnoDB采用将存储的数据表空间(tablespace)进行存放的设计。

默认配置下会有一个初始大小为10MB,名为ibdata1的文件。该文件就是默认的表空间文件(tablespace file),用户可以通过参数innodb_data_file_path对其进行设置。用户可以通过多个文件组成一个表空间,同时制定文件的属性。该文件可以自动增长(autoextend)。设置innodb_data_file_path参数后,所有基于InnoDB存储引擎的表的数据都会记录到该共享表空间中。

若设置了参数innodb_file_per_table,则用户可以将每个基于InnoDB存储引擎的产生一个独立表空间。独立表空间的命名规则为:表名.ibd。通过这样的方式,用户不用将所有数据都存放于默认的表空间中。

注意

这些单独表空间仅存储该表的数据索引插入缓冲BITMAP等信息,其余信息还是存放在默认的表空间中。

重做日志文件

在默认情况下,在InnoDB存储引擎的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件。在MySQL官方手册中将其称为InnoDB存储引擎的日志文件,不过更准确的定义应该是重做日志文件(redo log file)。为什么强调是重做日志文件呢?因为重做日志文件对于InnoDB存储引擎至关重要,它们记录了对于InnoDB存储引擎的事务日志。

每个InnoDB存储引擎至少1个重做日志文件组(group),每个文件组下至少2个重做日志文件,如默认的ib_logfile0和ib_logfile1。

为了得到更高的可靠性,用户可以设置多个的镜像日志组(mirrored log groups),将不同的文件组放在不同的磁盘上,以此提高重做日志的高可用性。

日志组中每个重做日志文件的大小一致,并以循环写入的方式运行。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,再当重做日志文件2也被写满时,会再切换到重做日志文件1中。

上一篇 下一篇

猜你喜欢

热点阅读