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

时间: 2024-08-01 17:57:02

MySQL的InnoDB文件介绍的相关文章

【MySQL】Innodb 恢复工具介绍

      在和数据打交道的过程中,总会遇到误删除数据的情况,在没有备份和binlog的情况下,如何恢复呢?本文介绍一个工具Percona Data Recovery Tool for InnoDB  使用 该工具的 注意事项: 1 The tools work only for InnoDB/XtraDB tables, and will not work with MyISAM tables. Percona does have a preliminary set of tools for

MySQL的InnoDB逻辑存储结构

InnoDB存储引擎中的表非常像Oracle中的索引组织表,每张表必须得有主键,如果表在创建时没有显示定 义主键,则根据以下原则自动创建主键: 1)如果有非空的唯一索引,则该索引所在的列为主键: 2)如果不符合上述条件,自动创建一个6个字节的指针为主键. InnoDB存储引擎的逻辑存储 结构和Oracle几乎一样,从大到小分别为:表空间.段.区.页,它们的关系如下图所示: 表空间 在上一篇<MySQL InnoDB文件介绍>中,我们知道InnoDB有一个默认的表空间,如果我们启用了参数 inn

MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析_Mysql

mysql的innodb扩容为了添加一个数据文件到表空间中,首先要关闭 MySQL 数据库,编辑 my.cnf 文件,确认innodb ibdata文件的实际情况和my.cnf的配置是否一致,这里有两种情况: 1.my.cnf的配置 innodb_data_file_path=ibdata1:10G;ibdata2:10G:autoextend 如果当前数据库正在使用ibdata1,或者使用ibdata2,但ibdata2没有超过10G,则对my.cnf配置直接改成: innodb_data_f

MySQL数据库InnoDB数据恢复工具的使用小结详解_Mysql

本文从实际使用经验出发,介绍一款开源的MySQL数据库InnoDB数据恢复工具:innodb-tools,它通过从原始数据文件中提取表的行记录,实现从丢失的或者被毁坏的MySQL表中恢复数据.例如,当你不小心执行DROP TABLE.TRUNCATE TABLE或者DROP DATABASE之后,可以通过以下方式恢复数据.以下内容大部分参考自:Percona Data Recovery Tool for InnoDB,文档是英文的,而且写的比较晦涩,这里是个人的实战经验总结,供大家参考学习.在介

详解MySQL下InnoDB引擎中的Memcached插件_Mysql

前些年,HandlerSocket的横空出世让人们眼前一亮,当时我还写了一篇文章介绍了其用法梗概,时至今日,由于种种原因,HandlerSocket并没有真正流行起来,不过庆幸的是MySQL官方受其启发,研发了基于InnoDB的Memcached插件,总算是在MySQL中延续了NoSQL的香火,以前单独架设Memcached服务器不仅浪费了内存,而且还必须自己维护数据的不一致问题,有了Memcached插件,这些问题都不存在了,而且借助MySQL本身的复制功能,我们可以说是变相的实现了Memca

Java Socket+mysql实现简易文件上传器的代码_java

最近跟着某网站学习了一个小项目,因为白天有课,所以都是晚上写的,今天把它完成了. 项目主要是实现一个文件上传器,通过客户端的登陆,把本地文件上传到服务器的数据库(本地的). 首先建两个表如下: 一个文件信息表 CREATE TABLE `fileinfo` ( `Fname` char(50) NOT NULL, `FInfo` blob NOT NULL, `FId` int(10) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`FId`) ) ENGINE=I

Mysql数据库主从复制相关介绍

公司使用master-slave架构,就具体学习了下,这里记录下相关内容. Replication的好处 读写分离:主数据库负责写和update数据,从数据库负责读操作 数据安全:由于数据复制到从库,并且可以对从库的复制进程进行停止操作,所以可以在从库上进行备份服务而不需要对主服务器进行中断操作 可分析:在线数据可以在master数据库上创建,然后在slave数据库上进行分析,且不会对master数据库造成性能影响 长数据:如果一个分支机构需要一份主要数据的copy,可以使用复制来创建一份本地备

解决误删mysql表物理文件的方法

该方法只介绍了如何救回这个表名(数据不恢复) 如果想要恢复原来数据 直接用extundelete把文件恢复后放回去即可  并且是适用于平时没有全备的情况下  如果有全备 直接那全备的frm和idb文件放回去 就可以了  该方法同样适用于数据表迁移(只迁移一个表)  因为discard再import的速度 远比先dump再恢复的速度要快得多 建议: 平时备份一下表结构是非常重要的 -- 如果你直接删除了mysql的表文件 (.frm .idb)  在mysql5.6 可能你就悲剧了  可能再也用不

mysql的log文件种类

在数据库系统中,日志系统重要的组成部分.他用于恢复数据库,和保证数据库原子操作的重要部分. Mysql的日志文件种类比较多,有的日志文件记录了mysql的服务状态以及mysql在工作中产生的系统信息,我们利用这些信息可以更方便的对mysql服务进行运维,但是有的日志文件如果我们进行了不正确的配置将对mysql的服务器主机造成不良的后果,下面我们就来看看mysql有哪些日志文件以及他们的各自的作用. Mysql相关的日志文件,主要有两大类:事务日志和事件日志: 事务日志: 简介: 详细的记录了在什