mysql ibdata1

article/2025/10/8 6:14:49
  • ibdata1是什么?

Mysql ibdata1即Innodb data1缩写,是innodb引擎的表空间,用于存放

  1. 数据字典Data dictionary:  只读的表,存储对象的相关信息,如占用空间,列的缺省值,约束信息,用户名,权限,审计信息等;
  2. 双写缓冲区 Double write buffer:; Innodb写入数据默认是16k/pages为一个单位写入,而磁盘是4k/page一个单位,为了防止写入一半,断电无法恢复数据的情况发生,引入了double writer buffer机制;double write buffer是一段连续空间,大小2M(128 page),数据写入的时候先写到doublewrite空间,然后再写入到磁盘,如果发生写入了一个page一半的时候断电,恢复后会自动从doublewrite中恢复;
  3. 插入缓冲区INSERT BUFFER:针对辅助索引(非unique),插入数据的时候,先将插入的数据在buffer中根据辅助索引叶子节点的Page_no排序,而后按照Page_no分批次插入,提高性能;
  4. 回滚日志rollback segment: 用于存储未提交事物,便于用户rollback,当commit后,数据即被标记无效;
  5. undo空间 用于存放undo 日志的;用于记录事物变更前的状态,如果未commit,其他session可以查看到变更前状态
  6. 如果innodb_file_per_table=0,则Innodb的数据和索引也存储在ibdata中; (如果为1,则存储在表名相同的ibd和frm文件中); 如果表数据存储在ibdata中的话,那么删除表是不会释放空间;

 

注: 系统page和mysql page大小查看

[root@localhost apple]# getconf PAGESIZE
4096mysql> show variables like 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.01 sec)mysql>

ibdata 路径和大小设置:

mysql>  show variables like 'innodb_data_%';
+-----------------------+--------------------------------------------+
| Variable_name         | Value                                      |
+-----------------------+--------------------------------------------+
| innodb_data_file_path | ibdata1:76M;ibdata2:10M:autoextend:max:50M |
| innodb_data_home_dir  | /export/data/mysql                         |
+-----------------------+--------------------------------------------+
2 rows in set (0.00 sec)

ibdata1:76M;ibdata2:10M:autoextend:max:50M含义是:生成2个表空间文件,第一个名字ibdata1,76M大小,第二个ibdata2,10M大小,当第一个达到最大值的时候,开始存储如第二个表空间,切第二个表空间可以自动增长,每次增长8M,增长的上限是50M;

  • 为什么ibdata1增长非常快速?

               因为里面有UNDO LOG,尤其是如果你的DB有大量写入的情况下,UNDO LOG会格外地多;

  • 如何查看ibdata1?
  • 有什么方法可以回收空间?

 


http://chatgpt.dhexx.cn/article/nrFZFPAT.shtml

相关文章

MySQL 中的 ibdata1

系统表空间是InnoDB数据字典、双写缓冲区、更改缓冲区和撤消日志的存储区域 。如果表是在系统表空间中创建的,而不是在每个表文件或通用表空间中创建,则它还可能包含表和索引数据。 系统表空间可以有一个或多个数据文件。默认情况下,ibdata1…

分享篇 | MySQL的ibdata1是个啥,为啥越来越大,怎么缩小?

同事的一个问题: MySQL的ibdata1文件越来越大,这是为啥、 看着别扭,怎么搞小它? ibdata1文件是什么? ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffe…

js类型转换题

考察隐式类型转换: 1.号一侧出现了字符串,就用String()将不是字符串的变成字符串,最后拼接在一起 2.-号则会调用显示类型转换Number(),将非数字转换成数字,进行计算 true 0 和 true false 都是隐式调用Number()变成…

JS中的强制类型转换

概念 这里我们首先需要知道什么是值类型转换 值类型转换:将值从一种类型转换为另一种类型,就是类型转换,分显示转换和隐式转换 js类型转换出的值都是基本类型(number、boolean、string、null、undefined、string)&a…

JavaScript——数据类型的转换

目录 一、其他类型转化成字符串类型 1. 把数字型转换为字符串型 变量.toString() 2. 利用 String(变量) 3. 利用 拼接字符串的方法实现转换效果 隐式转换 二、其他类型转化成数字类型(重点) 1. parseInt(变量) 可以把 字符型的转换为数字型…

JavaScript类型转换规则

类型转换 先梳理一下es6之前有五种基本数据类型:Null、Undefined、String、Number 、Boolean 布尔类型转换规则 直观上为空的值(0、空字符串、null、undefined、和NaN)将变为false 注意 :包含"0" 为true console.log(Boolean("")); //falseconsole.log(…

JavaScript类型转换

javascript是一种弱类型的语言,变量和类型无关,所以有时需要我们进行类型转换 一、数字型转换(number) 两种方法: 1、number:类型转化走的是v8引擎最底层机制的转化规则: 先将引用类型转化为…

js类型转换

NaNi??? 一、显性类型转换 强制类型转换主要是指通过String、Number和Boolean等构造方法手动转换成对应的字符串、数字和布尔值。 1.1 转为字符串 1.1.1 原始类型转字符串 原始类型字符串string :‘str’“str”number : 123“123”Boolean“true”/“fals…

Axure 9.0.0.3701 授权码

产品经理主力工具 Axure 在2020年5月26日更新了最新的 3701 版本,具体更新如下: 很多小伙伴在更新后会出现之前的授权无法使用的情况,如果出现这种情况大家可以通过在产品栈查找相对应的版本进行获取最新的授权码。 获取地址:http…

Axure 8.0/9.0 注册码 激活码 授权码 License

先查版本号,根据版本号在下面的网址查找对应的授权密钥(没有的话,可以试试相近版本) https://7rp.cn/34

Axure 9.0.0.3704 授权码

产品经理常用工具软件 Axure 又更新啦,本次更新版本为 Axure RP 9.0.0.3704,具体更新如下: 如何查看版本号: 更新后效果: 很多小伙伴在更新到最新版本后之前的授权出现了失效的情况,下边栈长为大家准备了最…

全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权

文章目录 1. 文章引言2. 下载Axure93. 安装Axure94. Axure9中文5. Axure9授权 1. 文章引言 最近在学习原型图,针对画原型图的工具,反复对比墨刀、Axure、xiaopiu后,最终选择了Axure。 接下来,我便从Axure RP 9的下载、安装、中文…

Axure 8授权码

转自:Axure 8.1.0.3372亲测可用授权码 只为记录下 被授权人: zdfans.com 授权密钥: gP5uuK2gHiIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7FF3pAz7dTu8B61ySxli

Axure RP9授权码

axure rp9安装教程(如需免费版安装包请点击此处) 1.下载本站提供的压缩包进行解压 2.双击AxureRP-setup9.exe安装程序进行安装 3.点击下一步 4.勾选我同意,点击下一步 5.选择安装位置默认也可以 6.静静的等待安装 7.安装好后点击完成安装&…

combinations()函数(python)

itertools.combinations(iterable, r) 从可迭代对象iterable中选取r个单位进行组合,并返回一个生成元组的迭代器 定义 def combinations(iterable, r):# combinations(ABCD, 2) --> AB AC AD BC BD CD# combinations(range(4), 3) --> 012 013 023 123pool…

Combiner合并案例

Combiner合并案例 需求1. 需求说明2. 文件 案例分析1. 需求分析2. 输入数据3. 期望输出数据4. 实施方案(1)方案一(2)方案二 代码实现1. 基于wordcount案例2. 方案一3. 方案二 结果截图 需求 1. 需求说明 统计过程中对每一个MapT…

MapReduce的Combiner详解

核心意义 :减少集群之间的网络开销具体实现步骤 1.自定义一个Combiner 继承 reduce 重写reduce方法2.在 job 中设置:job.setCombinerClass(Combiner类.class) 注意: combiner 能够应用的前提是不能影响最终的业务逻辑,而且,combiner 的输出 kv 应该跟 …

Combiner和Partitioner

Combiner和Partitioner InputFormat & RecordReaders InputFormat 将输出文件拆分为多个 InputSplit,并由 RecordReaders 将 InputSplit 转换为标准的<key,value>键值对,作为 map 的输出。这一步的意义在于只有先进行逻辑拆分并转为标准的键值对格式后,才能为多…

hadoop使用combiner合并操作

前言 任务从MapperTask出来的时候,数据要暂存在一段缓存空间,然后ReducerTask再拉取这些数据进行处理,map到reduce中间的这一段操作,官方称作为 shuffle 通过前面的章节我们了解到,往往来说,MapperTask的任务数量是多于ReduceTask的,这是因为原始的待处理的文件可能很…

Combiners

Combiners 怎么理解combiners? 1、每一个map可能会产生大量的输出&#xff0c;combiner的作用就是在map端对输出先做一次合并&#xff0c;以减少传输到reducer的数据量。 2、combiner最基本是实现本地key的归并&#xff0c;combiner具有类似本地的reduce功能。 3、如果不用…