加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_镇江站长网 (https://www.0511zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL的InnoDB文件介绍 - MySQL教程

发布时间:2014-01-06 15:45:04 所属栏目:MySql教程 来源:站长网
导读:MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种,一种是和MySQL数据库本身相关 的文件,一种是和存储引擎相关的文件。本文主要介绍和InnoDB
MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种,一种是和MySQL数据库本身相关 的文件,一种是和存储引擎相关的文件。本文主要介绍和InnoDB存储引擎相关的文件。

表空间文件

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

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

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

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

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

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

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

重做日志文件

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

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

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

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

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

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

(编辑:应用网_镇江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!