(六)mysql常用命令之InnoDB存储引擎文件

  • 概述
    前面提到的错误日志,慢查询日志,二进制日志,参数配置,.frm表结构,pid,socket这些文件,都是和数据库实例相关的,但是在mysql的可插拔的设计中,设计了不同的存储引擎,那么这些存储引擎产生的文件是不同的,我们现在就来看看innodb类型存储引擎的一些文件。

  • 表空间文件
    之前我们知道有.frm文件用于存储表结构定义,那么自然而然表中的数据也需要存储,这就是表空 间文件。
    在这里插入图片描述
    文件参数中,innodb_data_file_path这个参数就是用来指明innodb类型存储引擎表的数据存储文件的,这里没有给出绝对路径,就是指的mysql的datadir目录下的
    在这里插入图片描述
    上面可以看到有一个名称为ibdata1这个文件,文件大小为12M,在默认情况下,所有的innodb类型的表的数据都存储在这个文件中的。
    在这里插入图片描述
    innodb_file_per_table 这个参数是用来指明每一个innodb类型的表是否单独开一个表空间文件进行存储表数据,索引等信息,打开后,将每一个innodb类型的表都单独开一个表空间文件存储,就不会把所有数据都存放在一个共享的表空间文件中了
    在这里插入图片描述
    看到上面每张表除了有frm文件,是不是还有对应的ibd文件,这个就是每张表的独立表空间文件,用于存储各个表的自己的数据的,但是有一点需要注意:这些单独的表空间文件存储了表的数据,索引,和插入缓冲Bitmap等信息,表剩下的其他信息还是存储在共享表空间中的。

  • 重做日志文件
    InnoDB存储引擎的日志文件,只记录这种类型引擎相关的事务日志,和二进制日志文件区别就是,二进制日志文件记录所有存储引擎的操作日志;二进制日志记录的是关于一个事务的的具体操作内容是逻辑上的变化,而重做日志是记录物理上的变化; 二进制文件在commit之前是不会把这个事务的操作写入到binlog(二进制文件)中的,而是先放在缓存中的,等事务提交再将缓冲区的操作日志一并写入到binlog中,而在事务进行中,却有不断地将重做日志条目写入到重做日志文件中。很明显如果断电,二进制文件中将丢失部分数据,而重做日志可以恢复到断电前的状态。
    在这里插入图片描述
    ib_logfile0和ib_logfile1就是重做日志文件,在datadir目录下
    在这里插入图片描述
    这里关于重做日志有三个参数需要介绍:
    a.innodb_log_file_size:这个是指单个重做日志文件的默认大小
    b.innodb_log_files_in_group:这个是指重做日志文件组中重做日志文件的数量
    c.innodb_log_group_home_dir:这个指重做日志文件存放的home目录,默认是datadir

猜你喜欢

转载自blog.csdn.net/weixin_38312719/article/details/89334164
今日推荐