业务场景下,不影响业务进行的情况下修改大数据量表的表结构做法

如何不影响业务进行的情况下修改表结构

1.背景

在平时的开发过程中,有些时候因为业务或者需求调整会遇到需要进行对生产线上的表调整结构。一般涉及线上表调整都需要格外注意,调整表结构容易锁表,需要避免影响业务生产。

2.注意事项

1.检查该表是否正在使用中
2.检查该表的数据量级
3.检查数据库版本(不同版本的DDL处理方式不同)
补充:
MySQL各版本,对于DDL的处理方式是不同的,主要有三种:
Copy Table方式: InnoDB最早支持的方式。通过临时表拷贝的方式实现的。新建一个带有新结构的临时表,将原表数据全部拷贝到临时表,然后Rename,完成创建操作。这个方式过程中,原表可读不可写。
Inplace方式:所谓Inplace,也就是在原表上直接进行,不会拷贝临时表。相对于Copy Table方式,这比较高效率。原表可读不可写。
Online方式:MySQL 版本需要>5.6,无论是Copy Table方式,还是Inplace方式,原表只能允许可读不可写。对业务有较大的限制,因此MySQL最新版本中,InnoDB支持了所谓的Online方式DDL。与以上两种方式相比,online方式支持DDL时不仅可以读,还可以写。

3.处理方式

不同的情况有不同的处理方式,根据数据库版本看看DDL方式对业务生产的影响
情况1:表没有使用
处理方式:直接调整即可,因为表没有使用中,即使数据量大也不担心锁表影响业务操作,建议执行前咨询一下运维同学操作的可行性
情况2:表使用中
如果表在使用中的话无论数据量大还是数据量小都建议进行如下操作:

  1. 创建临时表
  2. 将临时表和正式表的名称互换,使得新数据都进入临时表
  3. 将正式表的字段长度进行变更。此过程会进行锁表
  4. 变更
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值