返回顶部
首页 > 资讯 > 数据库 >MySQL中的ibdata1怎么使用
  • 890
分享到

MySQL中的ibdata1怎么使用

2023-07-05 11:07:36 890人浏览 薄情痞子
摘要

本篇内容主要讲解“MySQL中的ibdata1怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql中的ibdata1怎么使用”吧!mysql的ibdata1用法系统表空间是InnoD

本篇内容主要讲解“MySQL中的ibdata1怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Mysql中的ibdata1怎么使用”吧!

    mysql的ibdata1用法

    系统表空间是InnoDB数据字典、双写缓冲区、更改缓冲区和撤消日志的存储区域 。

    如果表是在系统表空间中创建的,而不是在每个表文件或通用表空间中创建,则它还可能包含表和索引数据。

    系统表空间可以有一个或多个数据文件。默认情况下,ibdata1会在数据目录中创建一个名为 的系统表空间数据文件 。系统表空间数据文件的大小和数量由innodb_data_file_path启动选项定义。

    MySQL中的ibdata1怎么使用

     ibdata1即Innodb data1的缩写,是innodb引擎的表空间,用于存放以下内容:

    • 数据字典Data dictionary:只读的表,存储对象的相关信息,如占用空间,列的缺省值,约束信息,用户名,权限,审计信息等;

    • 双写缓冲区 Double write buffer:Innodb写入数据默认是16k/pages为一个单位写入,而磁盘是4k/page一个单位,为了防止写入一半,断电无法恢复数据的情况发生,引入了double writer buffer机制;double write buffer是一段连续空间,大小2M(128 page),数据写入的时候先写到doublewrite空间,然后再写入到磁盘,如果发生写入了一个page一半的时候断电,恢复后会自动从doublewrite中恢复;

    • 插入缓冲区INSERT BUFFER:针对辅助索引(非unique),插入数据的时候,先将插入的数据在buffer中根据辅助索引叶子节点的Page_no排序,而后按照Page_no分批次插入,提高性能;

    • 回滚日志rollback segment: 用于存储未提交事物,便于用户rollback,当commit后,数据即被标记无效;

    • undo空间 用于存放undo 日志的;用于记录事物变更前的状态,如果未commit,其他session可以查看到变更前状态

    • 如果innodb_file_per_table=0,则Innodb的数据和索引也存储在ibdata中; (如果为1,则存储在表名相同的ibd和frm文件中); 如果表数据存储在ibdata中的话,那么删除表是不会释放空间;

    mysql 默认配置使用 innodb 引擎 innodb_file_per_table 默认是关闭的 , 因此表空间默认建立在 ibdata1 上

    MySQL中的ibdata1怎么使用

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

    2 、如果 innodb_file_per_table=0( 默认 =1) ,则 ibdata 也存放 InnoDB 表的实际数据,也就是 InnoDB 表建立后,不会再有单独的 tablename.ibd 文件 , 如果是 innodb_file_per_table=1, 存放 在新的表的 ibd 文件当中

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

    导致ibdata1 增长很快的原因

    数据库中运行有长事务,记录了大量的UNDO信息,从而导致了ibdata1持续增长。

    可以通过show engine innodb status ;命令来查看。

    MySQL中的ibdata1怎么使用

    mysql中并未提供如何查看ibdata1中的存储内容信息。可以使用工具 innochecksum 来看。

    ibdata1是什么?

    MySQL使用InnoDB引擎的时候,ibdata1这个文件会随着时间的增长,会变得越来越大,占据大量的磁盘空间。

    那么,ibdata1里保存了哪些东西,为什么会变得越来越大呢,让我们开看看ibdata1的构造。

    ibdata1是InnoDB的共有表空间,默认情况下会把表空间存放在一个文件ibdata1中,会造成这个文件越来越大。

    发现问题所在之后,解决方法就是,使用独享表空间,将表空间分别单独存放。MySQL开启独享表空间的参数是Innodb_file_per_table,会为每个Innodb表创建一个.ibd的文件。

    操作步骤

    下面讲一下具体的操作。

    1) 导出数据库中所有数据

    # mysqldump -u root -p --all-database > /tmp/all-database.dump

    2) 删除数据库中数据

    # mysql -u root -pmysql> drop database dbname;

    3) 停止MySQL

    # /etc/init.d/mysqld stop

    4) 删除ibdata1文件(移动到/tmp下)

    # mv /var/lib/mysql/ibdata1 /tmp# mv /var/lib/mysql/ib_logfile0 /tmp# mv /var/lib/mysql/ib_logfile1 /tmp

    5) my.cnf设定

    # vi /etc/my.cnf开启独享表空间,并指定ibdata1大小为1G,ibdata2大小200M,自动扩张。innodb_data_home_dir = /var/lib/mysqlinnodb_data_file_path = ibdata1:1G;ibdata2:200M:autoextendinnodb_file_per_table

    6) 启动MySQL

    # /etc/init.d/mysqld start

    7) 导入数据

    # mysql -u root -p < /tmp/all-database.dump

    8) 确认

    后记

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

    • InnoDB表的元数据

    • Buffer

    • UNDO日志

    到此,相信大家对“MySQL中的ibdata1怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    您可能感兴趣的文档:

    --结束END--

    本文标题: MySQL中的ibdata1怎么使用

    本文链接: https://lsjlt.com/news/351444.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • MySQL中的ibdata1怎么使用
      本篇内容主要讲解“MySQL中的ibdata1怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中的ibdata1怎么使用”吧!MySQL的ibdata1用法系统表空间是InnoD...
      99+
      2023-07-05
    • MySQL中的ibdata1用法解读
      目录mysql的ibdata1用法导致ibdata1 增长很快的原因ibdata1是什么?总结MySQL的ibdata1用法 系统表空间是InnoDB数据字典、双写缓冲区、更改缓冲区和撤消日志的存储区域 。 如...
      99+
      2023-03-13
      MySQLibdata1 ibdata1用法 MySQLibdata1用法
    • 如何收缩/清除 MySQL 中的 ibdata1 文件?
      ibdata1文件无法收缩,这是MySQL的一个特别麻烦的特性。如果删除所有数据库,删除文件并重新加载 mysqldump,则可以缩小 ibdata1 文件。 我们可以配置 MySQL,以便将每个表(包括其索引)存储为单独的文件。从 MyS...
      99+
      2023-10-22
    • Linux运维中ibdata1和mysql-bin致磁盘空间问题怎么处理
      本篇文章给大家分享的是有关Linux运维中ibdata1和mysql-bin致磁盘空间问题怎么处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。初学Linux运维,我们可能会遇...
      99+
      2023-06-05
    • MySQL出现启动报错问题InnoDB:Unable to lock/ibdata1 error怎么办
      这篇文章给大家分享的是有关MySQL出现启动报错问题InnoDB:Unable to lock/ibdata1 error怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在O...
      99+
      2024-04-02
    • mysql中的explain怎么使用
      本篇内容介绍了“mysql中的explain怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2024-04-02
    • mysql中的separator怎么使用
      在MySQL中,`separator`是一个用于设置输出结果的分隔符的命令。它可以在查询结果中插入自定义的分隔符,以改变结果的显示方...
      99+
      2023-08-30
      mysql separator
    • mysql中的json_extract怎么使用
      这篇文章主要介绍“mysql中的json_extract怎么使用”,在日常操作中,相信很多人在mysql中的json_extract怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中的json...
      99+
      2023-07-06
    • mysql中的replace怎么使用
      在MySQL中,REPLACE语句用于替换表中的数据。它的语法如下: REPLACE INTO table_name (column...
      99+
      2024-04-09
      mysql
    • MySQL中的substring怎么使用
      在MySQL中,substring函数可以用来提取一个字符串的子字符串。它的语法如下: SUBSTRING(string, ...
      99+
      2024-04-28
      mysql
    • 怎么解决MySQL的[ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode问题
      本篇内容主要讲解“怎么解决MySQL的[ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode问题”,感兴趣的朋友不妨来看看。本文介绍...
      99+
      2024-04-02
    • mysql中的limit怎么是使用
      这篇文章主要介绍“mysql中的limit怎么是使用”,在日常操作中,相信很多人在mysql中的limit怎么是使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中...
      99+
      2024-04-02
    • mysql中的注释怎么使用
      本篇内容介绍了“mysql中的注释怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2024-04-02
    • mysql中not怎么使用
      本篇内容介绍了“mysql中not怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2024-04-02
    • mysql中if怎么使用
      本篇内容介绍了“mysql中if怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2024-04-02
    • mysql中and怎么使用
      这篇文章主要为大家展示了“mysql中and怎么使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中and怎么使用”这篇文章吧。 ...
      99+
      2024-04-02
    • mysql中explain怎么使用
      在MySQL中,可以使用EXPLAIN语句分析查询语句的执行计划。EXPLAIN语句可以帮助我们理解查询语句是如何被MySQL优化器...
      99+
      2023-08-11
      mysql explain
    • mysql中TIMESTAMPDIFF怎么使用
      在MySQL中,TIMESTAMPDIFF函数用于计算两个日期或时间之间的差值,可以用于计算年、月、日、小时、分钟或秒之间的差值。TIMESTAMPDIFF函数的语法如下:TIMESTAMPDIFF(unit, start_dateti...
      99+
      2023-08-09
      mysql
    • mysql中exists怎么使用
      在MySQL中,`EXISTS`是一个用于判断子查询中是否存在数据的关键字。它的使用方式如下:```sqlSELECT co...
      99+
      2023-08-29
      mysql exists
    • MySQL中administrator怎么使用
      在MySQL中,administrator通常是指具有超级权限的用户,可以执行所有数据库管理操作。管理员可以使用以下命令来管理数据库...
      99+
      2024-04-09
      MySQL
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作