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中存的就是数据行和索引信息,所以达到了需求。

      

        

  • 相关阅读:
    Jquery开发技巧汇总
    (转)
    C#中的委托和时间
    asp.net中like 使用参数化(转)
    省市选择
    安卓对话框
    z转自 西西吹雪
    winform控件验证技术(转)
    C#获取网卡Mac地址 .(转)
    关于GDI+错误的修正
  • 原文地址:https://www.cnblogs.com/quzq/p/12833272.html
Copyright © 2011-2022 走看看