大数据表结构修改

Posted 天纵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据表结构修改相关的知识,希望对你有一定的参考价值。

大数据表结构修改

随着业务的发展。某些业务表会达到很高的量级。这时候某些业务如果牵扯到修改数据结构,就不是简单的alter table 能搞定的事情了

话不多说,直接上方案:

graph LR
    复制一个新表 --> 修改表结构 -->拷贝数据 --> 重命名新表 ---> 删除老表

该方案:速度很快的。几百万数据不到1分钟就搞定了(跟表字段数有关,以实际为准,建议分批拷贝)

以下以表A为例子

CREATE TABLE `A` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `is_delete` tinyint(1) DEFAULT NULL,
  `type` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. 复制一个新表,表结构跟老表一摸一样

    create table A_new like A;
  2. 修改表结构(这里以增加字段为例)

    alter table A_new add column `status` tinyint(8) DEFAULT NULL;
  3. 拷贝数据

    insert into A_new (id, is_delete, type) select id, is_delete, type from A 

ps:

  1. 如果修改的表结构为增加删除字段,请使用类似上面的sql,注意插入字段和查询字段必须一致
  2. 如果是增删索引,可以使用下面的sql

    insert into A_new select * from A
  3. 如果数据量较大,可以使用条件语句,分批拷贝(这里以id为例,一般都以create_time为条件)

    insert into A_new (id, is_delete, type) select id, is_delete, type from A where  id > 100000
  1. 修改表名

    rename table `A` to `A_bak`;
    rename table `A_new` to `A`;
  2. 大功告成

以上是关于大数据表结构修改的主要内容,如果未能解决你的问题,请参考以下文章

大数据表结构修改

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家

VSCode自定义代码片段13——Vue的状态大管家

在线修改大表结构pt-online-schema-change

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段