InnoDB存储引擎文件
InnoDB存储引擎文件
MySQL数据库包括数据库本身的文件和存储引擎文件。数据库自身的文件由参数文件(my.cnf)、错误日志文件、慢查询日志文件、查询日志文件、二进制日志文件、套接字文件、pid文件、表结构定义文件(tabname.frm)
和InnoDB存储引擎相关的文件有表空间文件和重做日志文件。
一、表空间文件
InnoDB引擎将存储的数据按照表空间进行存放的设计。在默认配置下有一个初始大小10M,名为ibdata1的文件。该文件就是默认的表空间文件,可以通过innodb_data_file_path参数配置,格式如下:
innodb_data_file_path = datafile1_spec1 [;datafile2_spec2]...
用户通过多个文件组成表空间,同时制定文件的属性,如:
innodb_data_file_path = /db/ibdata1:2000M;/dr/ibdata2:2000M:autoextend
这里时两个文件组成的表空间,若两个文件位于不同的磁盘,磁盘的负载可能被平均。可以提高数据库的整体性能,设置了innodb_data_file_path参数,所有InnoDB引擎表数据都会记录到该共享表空间中。
如果设置了innodb_file_per_table,则每个InnoDB表产生一个独立的表空间。命名规则 表名.ibd,不再将所有数据存放在默认的表空间。这些单独的表空间仅存储表的数据,索引,插入缓冲BITMAP等信息,其余信息仍然存在默认表空间。如图是InnoDB对于文件的存储方式:

二、重做日志文件
默认情况下,在InnoDB引擎的数据目录下有两个ib_logfile0和ib_logfile1的文件。这两个就是重做日志文件。当实例或介质失败时,重做日志就派上用场。例如,主机断电,数据库根据重做日志恢复到断电前的时刻。
每个InnoDB引擎至少有一个重做日志文件组,每个文件组至少两个重做日志文件。为了提高更高的可靠性,用户可以设置多个镜像日志组。将不同的文件组放在不同的磁盘上,提高日志的高可用性。在日志组中每个重做日志的大小一致。以循环的方式写入。InnoDB先写重做日志1,当达到文件最后,切换到重做日志2,日志2满了之后再切换到日志1。影响重做日志属性的参数有:
(1)、innodb_log_file_size 每个重做日志的大小
(2)、innodb_log_files_in_group 重做文件日志组中日志文件的数量,默认为2。
(3)、innodb_mirrored_log_groups 日志镜像文件组的数量,默认1。表示只有一个日志文件组,没有镜像。
(4)、innodb_log_group_home_dir 日志文件组所在路径,默认./ 表示在MySQL的数据目录下。
重做日志对系统性能影响很大,如果太大恢复需要很久。设置太小,否则一个事务的日志需要多次切换重做日志文件。重做日志太小,会频繁的触发检查点
InnoDB存储引擎文件的更多相关文章
- MySQL数据库和InnoDB存储引擎文件
参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...
- 《Mysql技术内幕,Innodb存储引擎》——文件、表
文件 日志 错误日志 对Mysql启动.运行和关闭过程进行记录,通过SHOW VARIABLES LIKE 'log_error'查看日志文件位置. 慢查询日志 Mysql启动时设置一个阈值,运行时间 ...
- MySQL技术内幕InnoDB存储引擎(三)——文件相关
构成MySQL数据库和InnoDB存储引擎表的文件类型有: 参数文件:MySQL实例运行时需要的参数就是存储在这里. 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件. socket文件 ...
- MySQL InnoDB 存储引擎原理浅析
注:本文主要基于MySQL 5.6以后版本编写,多数知识来着书籍<MySQL技术内幕++InnoDB存储引擎>,本文章仅记录个人认为比较重要的部分,有兴趣的可以花点时间读原书. 一.MyS ...
- 【Mysql技术内幕InnoDB存储引擎】读书笔记
一.存储引擎 1.InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用. 支持事务.行级锁.通过多版本并发控制(MVCC)支持高并发.提供一致性非锁定读.next-key locking避免 ...
- InnoDB存储引擎的表空间文件,重做日志文件
存储引擎文件:因为MySQL表存储引擎的关系,每个存储引擎都会有自己的文件来保存各种数据.这些存储引擎真正存储了数据和索引等数据. 表空间文件 InnoDB存储引擎在存储设计上模仿了Oracle,将存 ...
- 在MySQL的InnoDB存储引擎中count(*)函数的优化
写这篇文章之前已经看过了很多数据库方面的优化内容,大部分都是加索引.使用事务.要什么select什么等等.然而,只是停留在阅读的层面上,很少有实践,因为没有遇到真实的项目,一切都是纸上谈兵.实践是检验 ...
- MySQL InnoDB存储引擎
200 ? "200px" : this.width)!important;} --> 介绍 本篇文章是对Innodb存储引擎的概念进行一个整体的概括,innodb存储引擎的 ...
- [MySQL Reference Manual]14 InnoDB存储引擎
14 InnoDB存储引擎 14 InnoDB存储引擎 14.1 InnoDB说明 14.1.1 InnoDB作为默认存储引擎 14.1.1.1 存储引擎的趋势 14.1.1.2 InnoDB变成默认 ...
随机推荐
- 清理SuperMap三维缓存
一.iclient三维插件浏览器端缓存 方法1:遍历users子文件夹,发现指定目录有supermap,即删除 @echo offtitle 清理三维缓存@echo 开始清理三维缓存...for /f ...
- Python使用ldap3认证
一.安装ldap3模块(python版本为python3以上,Django=1.11.8)pip install ldap3 二.相关代码 from ldap3 import Server, Conn ...
- php搜索附近人及显示男生女生分开
// 滚动切换标签样式 switchTab: function (e) { this.setData({ currentTab: e.detail.current }); this.checkCor( ...
- 获取页面定位元素left top
1原生方法: 第一种方法,比较简单,就是直接通过obj.style.left和obj.style.top,但是有局限性,这种获取的方法只能获取到行内样式的left和top的属性值,不能获取到style ...
- python -- while循环,格式化输出,运算符,初识编码
一.while循环 1.语法 while 条件: 循环体(结果) 如果条件为真,则直接执行结果),然后再次判断条件,知道条件为假,停止循环. while True: print('你是谁呢') 退 ...
- 如何加快C++代码的编译速度 转 ccache
http://www.cnblogs.com/baiyanhuang/archive/2010/01/17/1730717.html C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速 ...
- Python—装饰器详解
装饰器:(语法糖) 本质是函数,它是赋予函数新功能,但是不改变函数的源代码及调用方式 原则: 1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 3.函数的返回值也不变 这两点简而言 ...
- Forth 采用CODE定义新词
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- Forth嵌套定义的执行过程图示
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- leetcode python 030 Substring with Concatenation of All Words
## 您将获得一个字符串s,以及一个长度相同单词的列表.## 找到s中substring(s)的所有起始索引,它们只包含所有单词,## eg:s: "barfoothefoobarman&q ...