mysql大数据表添加字段
方案一、老表数据迁移四部曲方案
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大数据表添加字段的更多相关文章
- 给MySQL中数据表添加字段
添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...
- MySQL中大数据表增加字段,增加索引实现
MySQL中大数据表增加字段,通过增加索引实现 普通的添加字段sql ALTER TABLE `table_name` ADD COLUMN `num` int(10) NOT NULL DEFAUL ...
- 【MySQL】实现线上千万数据表添加字段操作以及缓存刷新
需求背景: 由于业务需求,需要在线上用户表添加渠道字段,用于区分不同渠道注册的用户,目前该表有20+个字段,8个索引 线上用户数据大概1500W左右,需要不停机增加数据库字段,同时需要刷新Redis缓 ...
- Mysql大数据表优化处理
原文链接: https://segmentfault.com/a/1190000006158186 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表 ...
- 制作mysql大数据表验证覆盖索引
昨天跟同事聊起数据表性能的问题,能不能仅用覆盖索引实现数据的汇总统计.找了一个开发环境已有的数据表进行测试,通过explain命令,能看到mysql通过覆盖索引就能实现sum的需求,而无须去读取实际行 ...
- MySql中数据表增加字段很慢怎么办
正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...
- Python 在已创建的数据表添加字段报错问题
django.db.utils.IntegrityError: (1062, “Duplicate entry ’1234567891011’ for key_’dingdanid’”) 这个错误是之 ...
- MySQL大数据表水平分区优化的详细步骤
将运行中的大表修改为分区表 本文章代码仅限于以数据时间按月水平分区,其他需求可自行修改代码实现 1. 创建一张分区表 这张表的表字段和原表的字段一摸一样,附带分区 1 2 3 4 5 6 7 8 9 ...
- mysql大数据表优化
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- mysql中给表添加字段
添加字段: 格式:alter table 表名 add 字段名 字段类型 ; 如:给表stu_info 添加一个字段type,类型为varchar(30) alter table stu_info a ...
随机推荐
- 智能便捷_AIRIOT智慧充电桩管理解决方案
现如今随着对可持续交通的需求不断增加,电动车市场正在迅速扩大,建设更多更智能的充电桩,并通过管理平台提高充电设施的可用性和效率成为一项重要任务.传统的充电桩管理平台在对充电设施进行管理过程中,存在如下 ...
- 记录一次HTTPS无法访问的错误
Https无法连接Nginx,日志报错 *2179 SSL_do_handshake() failed (SSL: error:1420918C:SSL routines:tls_early_post ...
- 解决idea 控制台输出乱码问题:
解决idea 控制台输出乱码问题[IntelliJ IDEA 2022.1.3 (Ultimate Edition)]: 将两个地方文件编码设置成GBK 参考文档:https://blog.c ...
- 论GNU、Linux和GNU/Linux之间的关系
相信很多人看到了这个标题就会产生疑问,这篇文章到底要讲什么东西?在回答这个问题之前,我先提出几个问题? 1. 什么是Linux? 2. 什么是GNU? 3. GNU/Linux是什么玩意儿? 在回答了 ...
- 【2023全网最全最火】Selenium WebDriver教程(建议收藏)
在本教程中,我将向您介绍 Selenium Webdriver,它是当今市场上使用最广泛的自动化测试框架.它是开源的,可与所有著名的编程语言(如Java.Python.C#.Ruby.Perl等)一起 ...
- Qt-FFmpeg开发-回调函数读取数据(8)
音视频/FFmpeg #Qt Qt-FFmpeg开发-使libavformat解复用器通过自定义AVIOContext读取回调访问媒体内容 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发- ...
- JS中BOM事件,JS样式特效,表格对象和表单操作
DOM事件 1.DOM中的事件可以分为两类 1.浏览器行为 如:文档加载完成,图片加载完成 2.用户行为 如:输入框输入数据,点击按钮 (2).常见的DOM事件 onload 浏览器已完成页面的加载 ...
- FastJson转Java对像字段不区分大小写
昨天遇到参数key大小写不一致导致校验签名失败的问题,查了很长时间才找到原因.看了一下FastJson源码,发现JSON.toObject中转换成对象的时候会忽略大小写. 所以,当使用了JSON.to ...
- Java StringBuffer 与StringBuilder 类的介绍与区别
目录 StringBuffer类(用来解决String类的内存浪费问题) 构造方法 public StringBuffer(); 无参构造 public StringBuffer( String ); ...
- C#.NET 微信上传电子小票
HttpWebRequest 时,不认图片的Content-Type.Content-Type 实际是有传的. 报错内容:{"code":"PARAM_ERROR&quo ...