mysql innodb文件_MySQL的InnoDB文件介绍

MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种,一种是和MySQL数据库本身相关 的文件,一种是和存储引擎相关的文件。本文主要介绍和InnoDB存储引擎相关的文件。

表空间文件

InnoDB在存储上也模仿了Oracle的设计,数据按表空间进行存储,但是和Oracle不一样的是,Oracle 的表空间是个逻辑的概念,而InnoDB的表空间是个物理的概念。

你可以通过参数 innodb_data_file_path来设置默认的表空间文件,所有基于InnoDB存储引擎的表都会存储在该文件内。如果 你想基于每个表单独生成一个表空间文件,可以设置参数innodb_file_per_table为ON,这样表的数据、索引 和插入缓冲等消息存储在单独的表空间文件中,但其余信息还是存储在默认的表空间文件中。

下图显 示了表空间文件的存储方式:

3a8f52d6c4741c4ac7f8ed6017eb3725.png

上图中主要有以下几种存储文件:

1)表结构定义文件(.frm):MySQL里每个表和每个视图都有一 个对应的.frm文件用于记录表和视图的定义。注意:该文件和存储引擎无关,属于MySQL数据库本身的文件。

2)默认表空间文件(ibdata)

3)单独表空间文件(.ibd)

重做日志文件

重做日 志文件对InnoDB存储引擎至关重要,记录了事务日志,如果数据库由于宕机导致实例失败,重新启动时,就 可以利用重做日志恢复到宕机前的一致性状态。

MySQL的重做日志和Oracle的很类似,通过循环的方 式覆盖重用,下图显示了一个拥有3个重做日志文件的重做日志文件组:

d076f85e1119a700acfe4906bcca522b.png

这里有个疑问 ,同样是记录事务日志,InnoDB的重做日志文件和MySQL自身的二进制文件有什么区别?它们的区别主要有以 下三点:

1)首先,范围不同。二进制文件记录所有与MySQL相关的日志记录,包括InnoDB,MyISAM, Heap等存储引擎的日志。而InnoDB的重做日志只记录InnoDB相关的事务日志。

2)其次,内容不同。 二进制文件记录的是关于一个事务的具体操作内容,而InnoDB的重做日志记录每个数据页(page)更改的物 理情况。

3)写入的时间不同。二进制文件在事务提交之前记录,在事务进行过程中,不断有重做日 志条目写入重做日志文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值