登录
首页 >  数据库 >  MySQL

大数据表结构修改

来源:SegmentFault

时间:2023-01-16 14:38:18 382浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《大数据表结构修改》,文章讲解的知识点主要包括MySQL、修改、表结构,如果你对数据库方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

大数据表结构修改

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

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. 大功告成

终于介绍完啦!小伙伴们,这篇关于《大数据表结构修改》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表