zoukankan      html  css  js  c++  java
  • mysql innodb引擎独立表空间记录,表组成及表迁移

    以下涉及到的文件在mysql数据库指定的数据目录下。

    1. 独立表空间

      5.6之前所有表信息都在共享表空间存放,即ibdata文件中(存放所有数据库信息),也是mysql默认的设置。

      5.6及之后默认使用独立表空间存储数据行及索引信息,即ibd文件。特点为一个表对应一个ibd文件。ibdata文件中也只存放元数据+undo;

    2. innodb引擎表组成:

      .frm(存放表结构信息) + .ibd(存储数据行及索引) + .ibdata1(存放元数据+undo)

    3. 查看独立表空间是否生效

      select @@innodb_file_per_table;  结果为1表示独立表空间生效

    4. 更改独立表空间为共享表空间

      set global innodb_file_per_table=0;  了解即可, 不建议修改

      更改后再创建的表不再生成ibd文件,数据行和索引信息都将被存储到ibdata1文件中。

    5. 独立表空间迁移命令

      需求:复制表的frm文件和ibd文件到新库中,想正常使用该表。

        1. 因缺少元数据,即ibdata1文件中记录的信息,而这个文件我们无法直接修改,只能有mysql提供的语句来操作,顾此方法行不通。

        2. 在新库中创建和目标表一样结构的表,使得ibdata1数据字典中有该表信息;

            使用alter table xx dicard tablespace; 来使mysql删掉xx表的ibd文件;

         把目标表的ibd文件再复制到原来的ibd文件处;

         使用alter table xx import tablespace; 来使mysql重新加载改ibd文件,因ibd中存的就是数据行和索引信息,所以达到了需求。

      

        

  • 相关阅读:
    堆的实现(图片演示+文字讲解)
    数据结构之堆的插入、取值、排序(细致讲解+图片演示)
    插入排序
    (简单易懂)Java的快速失败(fail-fast)与安全失败,源码分析+详细讲解
    Eclipse安装Hibernate插件快速生成配置文件
    Hibernate级联操作解密(inverse和cascade)
    http协议详解
    javaweb中的关于编码问题总结
    Hyperparameter tuning
    win10修改jupyter notebook默认路径
  • 原文地址:https://www.cnblogs.com/quzq/p/12833272.html
Copyright © 2011-2022 走看看