方案一、老表数据迁移四部曲方案
1、新建老表t_order_goods的备份表t_order_goods_bak,同时加一个字段:isVirtual 并给默认值
2、迁移老表t_order_goods数据到备份表t_order_goods_bak中
3、删除老表t_order_goods
4、新命名备份表t_order_goods_bak表名为t_order_goods
以上的操作步骤2~4建议是在脱机的情况下执行,避免在执行迁移数据过程中有新数据进来,导致新表数据流失不完整

方案二、升级MySQL的服务器版本
1、将现有MySQL版本5.7升级到8.0.12之后的版本
2、然后再执行添加字段操作

方案一:
优势:不用再调整业务层的应用程序代码,只需要DBA迁移表即可
劣势:新表可能会跟老表数据不一致,数据不完整;脱机操作过长可能会影响其他业务的正常运行
方案二:
优势:不影响业务层的应用程序代码,也不会导致数据丢失
劣势:升级过程,必然要脱机,此过程时间过程一样会影响业务的正常运行

经验总结
个人建议在实际情况允许的情况下,如果大家所在的公司也出现类似的问题时,尽可能的还是采用方案三:升级服务器版本
毕竟长远考虑,后续在业务的发展不确定情况下,原始表拓展加新的字段是很正常的一件事,升级到高版本后 因为引入了新的算法:即时算法 所以会毫秒级别的加字段 不会对业务发布上线造成影响

方案一案例:

为了避免这种问题,记录一下比较妥帖的办法

1.创建一个临时的新表,复制旧表的结构

create table `tmp` like `goods`;

2.给新表加上新增的字段

ALTER TABLE `tmp`
ADD COLUMN `num` int(10) NOT NULL DEFAULT 0 AFTER `unit`;

3.把旧表的数据复制过来

insert into tmp(id,name,unit) select id,name,unit from goods;

4.重命名

rename table goods to goods_bak;
rename table tmp to goods;

一般情况下,一百多万的数据量,也可以直接进行加字段操作

但是得看服务器的运行情况,如果有大量服务占用内存,添加字段可能会出现问题

mysql大数据表添加字段的更多相关文章

  1. 给MySQL中数据表添加字段

    添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...

  2. MySQL中大数据表增加字段,增加索引实现

    MySQL中大数据表增加字段,通过增加索引实现 普通的添加字段sql ALTER TABLE `table_name` ADD COLUMN `num` int(10) NOT NULL DEFAUL ...

  3. 【MySQL】实现线上千万数据表添加字段操作以及缓存刷新

    需求背景: 由于业务需求,需要在线上用户表添加渠道字段,用于区分不同渠道注册的用户,目前该表有20+个字段,8个索引 线上用户数据大概1500W左右,需要不停机增加数据库字段,同时需要刷新Redis缓 ...

  4. Mysql大数据表优化处理

    原文链接: https://segmentfault.com/a/1190000006158186 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表 ...

  5. 制作mysql大数据表验证覆盖索引

    昨天跟同事聊起数据表性能的问题,能不能仅用覆盖索引实现数据的汇总统计.找了一个开发环境已有的数据表进行测试,通过explain命令,能看到mysql通过覆盖索引就能实现sum的需求,而无须去读取实际行 ...

  6. MySql中数据表增加字段很慢怎么办

    正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...

  7. Python 在已创建的数据表添加字段报错问题

    django.db.utils.IntegrityError: (1062, “Duplicate entry ’1234567891011’ for key_’dingdanid’”) 这个错误是之 ...

  8. MySQL大数据表水平分区优化的详细步骤

    将运行中的大表修改为分区表 本文章代码仅限于以数据时间按月水平分区,其他需求可自行修改代码实现 1. 创建一张分区表 这张表的表字段和原表的字段一摸一样,附带分区 1 2 3 4 5 6 7 8 9 ...

  9. mysql大数据表优化

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  10. mysql中给表添加字段

    添加字段: 格式:alter table 表名 add 字段名 字段类型 ; 如:给表stu_info 添加一个字段type,类型为varchar(30) alter table stu_info a ...

随机推荐

  1. PageOffice6 版本常用事件

    1.AfterDocumentOpened 事件 打开文件后自动触发的事件是 AfterDocumentOpened 事件,它通常用于实现文件打开后自动执行某些业务逻辑,比如将默认控件全屏.禁止保存. ...

  2. springcloud整合stream解决项目升级的多个消息中间件的收发问题

    cloud stream (一)简介Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架.它可以基于 Spring Boot 来创建独立的.可用于生产的 Spring ...

  3. Vue——方法(methods)

    我们用 methods 选项向组件实例添加方法,它应该是一个包含所需方法的对象: <div id="app"></div> <script> c ...

  4. NOIP模拟95(多校28)

    T1 嗑瓜子 解题思路 \(f_{i,j}\) 表示操作 \(i\) 次,拿走了 \(j\) 个瓜子的概率,转移就比较直接了: \[f_{i+1,j+1}\leftarrow f_{i,j}\time ...

  5. C#.Net筑基-深入解密小数内部存储的秘密

    为什么0.1 + 0.2 不等于 0.3?为什么16777216f 等于 16777217f?为什么金钱计算都推荐用decimal?本文主要学习了解一下数字背后不为人知的存储秘密. 01.数值类型 C ...

  6. vue devtools工具安装 Vue实现数据绑定的原理

    通过chrome中的谷歌插件商店安装Vue Devtools工具,此工具帮助我们进行vue数据调试所用,一定要安装. https://chrome.google.com/webstore?utm_so ...

  7. web服务器 传统开发和前后端分离开发 服务器相关概念

    web服务器 Web服务器一般指的是网站服务器,是指驻留因特网上某一台或N台计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,目前最主流的三个Web服务器是Apache. Nginx . ...

  8. P7959 [COCI2014-2015#6] WTF 题解

    P7959 [COCI2014-2015#6] WTF 题解 呃,是一道 DP 题 说实话,原题实际上是不要输出一种方法的--但是似乎放这道题的人想增加一点难度? 这里有两种做法,但都是 DP. 预备 ...

  9. pytest系列之-mark功能的使用

    功能使用: 标记用例,按正常.异常用例划分等级进行标记,或者按照模块进行划分. 标记后,可以执行部分用例. 例如: 你有以下用例,文件目录结构如下: testcase ----user ----man ...

  10. The solution of P9194

    10黑寄. problem & blog 考虑到处理加边并不简单,所以我们可以考虑一个黑点 \(p\),连边\((u,p)(p,v)\). 考虑在现在这棵树上连个点在原图中有变相连相当于有一个 ...