mysql关于ibdata文件的理解

MySQL中的ibdata1文件为何不断增长? 此外,由于ibdata1文件包含了所有的InnoDB表数据和索引,如果ibdata1文件损坏,可能会导致数据库无法启动或数据丢失的风险。这些回滚段也会占用ibdata1文件的空间,因此当有大量的事务回滚发生时,ibdata1文件的大小会增加。自动增长(auto-increment):在某些情况下,当表中的自动增长列被用作主键或唯一键时,InnoDB存储引擎可能会在ibdata1文件中分配更多的空间来存储新的自动增长值。这意味着,随着数据库的使用,ibdata1文件的大小会逐渐增长。 阅读详情

总结

1、默认情况下ibdata存放InnoDB表(InnoDB数据字典)元数据、undo logs、the change buffer, and the doublewrite buffer

2、如果innodb_file_per_table=off,则ibdata也存放InnoDB表的实际数据,也就是InnoDB表建立后,不会再有单独的tablename.ibd文件

3、虽然InnoDB表元数据通过information_schema.tables来读取,但是实际上information_schema是一个虚拟数据库,并不物理存在,这些数据真正存放的地方就是ibdata

备注:元数据(meta data)--"data about data" 关于数据的数据,一般是结构化数据(如存储在数据库里的数据,规定了字段的长度、类型等)

ibdata file

https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_ibdata_file

A set of files with names such as ibdata1, ibdata2, and so on, that make up the InnoDB system tablespace. These files contain metadata about InnoDB tables, (the InnoDB data dictionary), and the storage areas for one or more undo logs, the change buffer, and the doublewrite buffer. They also can contain some or all of the table data also (depending on whether the file-per-table mode is in effect when each table is created). When the innodb_file_per_table option is enabled, data and indexes for newly created tables are stored in separate .ibd files rather than in the system tablespace.

The growth of the ibdata files is influenced by the innodb_autoextend_increment configuration option

一组名称为ibdata1,ibdata2等的文件,构成InnoDB系统表空间。 这些文件包含有关InnoDB表(InnoDB数据字典)的元数据,以及一个或多个撤消日志,更改缓冲区和双写缓冲区的存储区域。 它们还可以包含部分或全部表数据(取决于创建每个表时每个表的文件模式是否有效)。 启用innodb_file_per_table选项后,新创建的表的数据和索引将存储在单独的.ibd文件中,而不是存储在系统表空间中。

ibdata文件的增长受innodb_autoextend_increment配置选项的影响,默认是64M

The increment size (in megabytes) for extending the size of an auto-extending InnoDB system tablespace file when it becomes full. The default value is 64

MySQL开启独享表空间的参数是Innodb_file_per_table,会为每个Innodb表创建一个.ibd的文件。

开启独享表空间后,并不是说就不需要ibdata1了,因为在ibdata1中还保存着下面这些数据。

InnoDB表的元数据

Buffer

UNDO日志

system tablespace

https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_system_tablespace

One or more data files (ibdata files) containing metadata for InnoDB-related objects (the InnoDB data dictionary), and the storage areas for the change buffer, the doublewrite buffer, and possibly undo logs. It may also contain table and index data for InnoDB tables if tables were created in the system tablespace instead of file-per-table or general tablespaces. The data and metadata in the system tablespace apply to all databases in a MySQL instance.

系统表空间

包含InnoDB相关对象(InnoDB数据字典)的元数据的一个或多个数据文件(ibdata文件),以及更改缓冲区,双写缓冲区和可能的撤消日志的存储区域。 如果在系统表空间而不是每个表文件或一般表空间中创建表,它还可能包含InnoDB表的表和索引数据。 系统表空间中的数据和元数据适用于MySQL实例中的所有数据库。

实验过程

会话1

mysql> set global innodb_file_per_table=off;

mysql> show variables like '%innodb_file_per_table%';

+-----------------------+-------+

| Variable_name | Value |

+-----------------------+-------+

| innodb_file_per_table | OFF |

+-----------------------+-------+

打开会话2

创建了表tab4并插入数据,却发现tab4表没有tab4.ibd文件

mysql> create table test1.tab4 (hid int);

mysql> insert into test1.tab4 values (1);

[root@mydb ~]# ll /var/lib/mysql/test1 |grep tab4

-rw-r----- 1 mysql mysql 8558 Sep 30 19:56 tab4.frm

最后送波福利。现在加群即可获取Java工程化、高性能及分布式、高性能、高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限及领取相关资料,群号:835638062 点击链接加入群聊【Java高级架构】:https://jq.qq.com/?_wv=1027&k=5S3kL3v

MySQL的ibdata1文件过大如何缩小 通过优化表、重建表、导出和导入数据以及重建InnoDB表空间等方法,您可以尝试缩小MySQL的ibdata1文件的大小。请注意,这个过程需要足够的磁盘空间来存储导出和导入的数据,并且在导入数据时可能需要一些时间,具体取决于数据库的大小和系统的性能。请注意,这个方法可能需要一些额外的空间来创建新表,并且在复制数据时可能需要一些时间,具体取决于表的大小和系统的性能。这将重新组织表中的数据,并释放未使用的空间,从而减小ibdata1文件的大小。请注意,这个方法需要足够的磁盘空间来存储导出的数据。 阅读详情

相关推荐

旋转矩阵的左乘与右乘

旋转矩阵左右乘的详细讲解

qq_46619194的博客 3329

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

ibdata1文件是什么? ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffer和双写buffer。随着数据库的使用,ibdata1文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,默认是8M. 熟悉Oracle的亲,可以把ibdata理解成redo日志。 my.cnf中的参数设置形式: innodb_data_file_path = ibdata1:256M;ibdata2:

db_murphy的博客 1万+

UNITY2022 Cardboard环境搭建

必须安装 Git,并且 git 可执行文件必须位于 PATH 环境变量中。考文档:https://developers.google.cn/cardboard/develop/unity/quickstart?转到 Assets/Samples/Google Cardboard//Hello Cardboard/Scenes/HelloCardboard 场景中。粘贴https://github.com/googlevr/cardboard-xr-plugin.git到文本输入字段中。

weixin_39510925的博客 1211

Mysql表空间以及ibdata1文件过大问题

当 ibdata1 文件增长太快,通常是 MySQL 里长时间运行的被遗忘的事务引起的。尝试去解决问题越快越好(提交或者杀死事务),因为不经过痛苦缓慢的 mysqldump 过程,你就不能回收浪费的磁盘空间。也是非常推荐监控数据库以避免这些问题。我们的 MySQL 监控插件包括一个 Nagios 脚本,如果发现了一个太老的运行事务它可以提醒你。

weixin_46097480的博客 2722

ESP32 WiFi自平衡小车硬件与PID控制实战

自平衡小车是典型的嵌入式实时反馈控制系统,其核心依赖姿态感知(如MPU6050)、电机驱动(如L298N)与闭环控制算法(如PID)的协同。系统通过IMU采集俯仰角,经互补滤波融合处理,再由PID控制器实时计算PWM输出,驱动直流电机产生恢复力矩;WiFi模块(ESP32内置)则提供远程遥控接口,实现AP模式下的Web指令交互。该架构兼具硬实时性(毫秒级采样与响应)与软实时性(HTTP服务),广泛应用于机器人教学、智能小车开发及边缘控制原型验证。本文围绕ESP32平台,详解传感器接口、驱动电路设计、PID抗

weixin_42509513的博客 391

5分钟搞定!用ZLMediaKit+GB28181搭建低成本外网视频监控(含避坑指南)

本文详细介绍了如何利用开源ZLMediaKit流媒体服务器与国标GB28181协议,快速搭建低成本、可外网访问的企业级视频监控系统。文章提供了从服务端部署、设备配置到外网访问优化的完整实战指南,并重点分享了网络配置、性能调优及常见问题的避坑方案,帮助用户实现高清视频流的稳定推送与多格式播放。

bush的博客 332

Vue基本操作及运行截图总结

什么是双向数据绑定,就是当表单中的数据发生变化时,data中的数据也发生变化,v-model <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="http:...

1479

MMORPG网络游戏开发之任务系统的架构与设计

在网路游戏中做任务已经成为游戏很重要的一个核心功能和玩法,如何做好一个灵活可扩展的任务系统的架构与设计,今天来给大家分享一些我们的设计经验。接下来我把整个的任务系统分成以下6个模块:对于单机游戏而言,这6个模块都放在客户端直接处理,对于网路游戏而言,模块1~5实现在服务端,模块6实现在客户端。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。...

voidinit的专栏 3049

mysql查看数据文件ibdata_mysql关于ibdata文件的理解

总结1、默认情况下ibdata存放InnoDB表(InnoDB数据字典)元数据、undo logs、the change buffer, and the doublewrite buffer2、如果innodb_file_per_table=off,则ibdata也存放InnoDB表的实际数据,也就是InnoDB表建立后,不会再有单独的tablename.ibd文件3、虽然InnoDB表元数据通过...

weixin_28197941的博客 1284

2024年数字IC秋招-睿思芯科-IC验证工程师-笔试题

公司介绍:初创公司,做risc-v,公司位于深圳笔试题型:基础题(10个) + 选做题(5个)笔试平台:showmebug(电脑监控)笔试时间:1h个人感受:每年rsxk的题目好像是一样的,起码今年和去年的题目是相同的,但是做完笔试题目就没有消息了。

qq_42135020的博客 1582

《AI 时代FPGA的全栈开发实战・从入门到精通》专栏启动说明

《智驱FPGA》专栏面向初学者,聚焦AI时代FPGA开发新范式,以ChatGPT、ICCoder2.0等工具全程辅助,覆盖纯逻辑、Zynq软硬协同、端侧AI加速、高速接口等核心方向。通过126节图文+14个实战项目,传授AI生成代码、Prompt工程、时序优化等能力,助力学员从零成长为具备工程竞争力的FPGA工程师,结业可独立完成完整项目并写入简历。

现任某外企的算法工程师!专注于人工智能、嵌入式、FPGA、论文写作四大主题的教程和经验分享!辅导请➕v :sci666888999 172

【MySql】深入理解 InnoDB 核心文件结构(.ibd、.ib_logfile、undo 日志、ibdata1)

本文深入解析了InnoDB的核心文件结构及其关联逻辑。系统表空间ibdata1存储数据字典、undo日志等公共数据,独立表空间.ibd文件存储单表数据与索引。重做日志ib_logfile保证事务持久性,undo日志支持事务回滚和MVCC实现。文章通过数据写入和崩溃恢复两大流程,详细阐述了各组件间的协作机制:数据修改先更新缓冲池,再写redo日志确保持久化,最后异步刷盘;崩溃时通过redo恢复数据,undo处理未提交事务。同时针对ibdata1膨胀、.ibd碎片等常见问题给出了优化建议,帮助读者全面理解Inn

小盘海的技术专栏 1062

Python爬虫实战:高效爬取中国专利数据库的完整指南

在当今信息爆炸的时代,专利数据作为技术创新的重要指标,对企业研发、市场分析和学术研究都具有极高价值。中国作为全球专利申请量最大的国家,其专利数据库包含了海量的技术创新信息。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的中国专利数据库爬虫系统。中国专利数据库主要由国家知识产权局(CNIPA)维护,包含发明专利、实用新型专利和外观设计专利三大类。截至2023年,中国专利数据库已收录超过400万件发明专利和300万件实用新型专利。

2201_76125261的博客 1572

为什么mysql里的ibdata1文件不断的增长?

我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。 当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了。 一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 innodbfileper_table,所以问题是: ibdata1存了什么? 当你启用了 i

php教程 759

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql ibata文件_重装系统后,怎么调用之前mysql的数据_mysql

重装系统后,如何调用之前mysql的数据前提是:必须保留之前的数据库数据在介绍此方法之前,提醒各位最好的转移数据的方法为:在原来MYSQL服务器导出SQL文件,然后再在新的MYSQL服务器导入数据。先说下MYSQL存储数据的原理:MYSQL存储数据不是按照SQLSERVER一样(一个数据文件,一个日志文件)的。MYSQL新建一个数据库时,为该数据库在DATA文件夹下创建一个以该数据库名为名的文件夹...

weixin_31349647的博客 287

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

mysql的force的作用_mysql各种文件以及作用

本文主要介绍bin目录,data目录,以及mysql-test工具bin目录data目录data目录的组织data目录存放的是主要是mysql的数据文件。data目录存放的位置可以自己定制,参数是datadir> show variables like "%datadir%";+---------------+--------------------------+| Variable_nam...

weixin_26742753的博客 1983

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

服务器上的Mysql表全丢了情况下恢复数据

任务:web项目是在linux的Tomcat部署,Mysql也在上面,不知明原因下数据库宕机,启动不了,数据库表也突然没了,全空了!!!!!!!! mysql安装目录惊喜的发现var/目录下有类似丢失数据库的表 接下来就是怎么恢复进去了,首先我们用的是mysql的InnoDb引擎,找了下其资料:两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往

阿里Darker 2万+

mysql 启动1067错误 解决了

在服务中点启动 mysql, 很快就自动停止了, 再次启动,就会出现 1067错误,服务意外停止 google了不少,都是说my.ini的路径不正确的原因。 但尝试了还是不成功。 不知何果,备份好了data文件夹,就把原来的卸装了,再重新安装了一次。 可以成功启动。 再把原来备份好的替换了刚安装好的data文件(把原来的删除) 再启动,又出现了1067错误。 何故呢?再打开了data文件夹,把非文...

weixin_30646315的博客 101

mysql data 恢复

在介绍此方法之前,提醒各位最好的转移数据的方法为: 在原来MYSQL服务器导出SQL文件,然后再在新的MYSQL服务器导入数据。 但是既然我们原来的服务器已经卸载了,那我们就必须采用以下的方法。 先说下MYSQL存储数据的原理: MYSQL存储数据不是按照SQLSERVER一样(一个数据文件,一个日志文件)的。MYSQL新建一个数据库时,为该数据库在DATA文件夹下创建一个...

ycjunhua的专栏 367

【MYSQL从青铜到王者】 第一篇:Mysql文件组成

<h3 id="主角是数据库的物理文件">主角是数据库的物理文件</h3> <h1 id="说在前面">说在前面</h1> <blockquote> <p>有所不知,在MySQL里,物理文件是放在<e

码工是小希 356

mysql 启动_一个MySQL实例启动问题

//一个MySQL实例启动问题// 下午在启动一个线上MySQL服务的时候,遇到了一个问题,简单整理一下过程。问题描述: 之前用kill的方法杀掉了一个MySQL的进程,今天想要重启这个进程,启动的过程中,发现2020-03-06T19:34:35.443445+08:000[Note]InnoDB:Numberofpools:12020-03-06T19:34...

weixin_39688378的博客 122

mysql无故关闭_宝塔的mysql老是自己关闭停止

宝塔的mysql老是自己关闭停止最近一个安装宝塔环境的项目,mysql老是关闭停止了。连续好多次了,然后我就发现不对劲。然后去查了下日志,日志内容:2019-12-29 11:11:00 30969 [Note] InnoDB: Highest supported file format is Barracuda.2019-12-29 11:11:00 30969 [Note] InnoDB: T...

weixin_34024811的博客 2011

file_instances:文件实例

file_instances:文件实例 用户的表文件等 表中记录了系统中打开了文件的对象,包括ibdata文件,redo文件,binlog文件,用户的表文件等,比如redo日志文件:/u01/my3306/data/ib_logfile0。open_count显示当前文件打开的数目,如果重来没有打开过,不会出现在表中。 mysql> select * from file_instances; +------------------------------------------------.

weixin_40524659的博客 311
上一篇: 如果再有人问你分布式 ID,这篇文章丢给他
下一篇: 关于不同的MySQL复制解决方案概述
普通网友
博客等级 码龄8年 55粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值