大表新增字段

13 篇文章 0 订阅
在一个业务繁忙并且数据量巨大的环境中,新增一个字段对于DBA来说都是一个不简单的任务

ALTER_XHL 表记录8000W 行,与之有关的并发业务量非常大,新增带有default值的字段

ALTER TABLE ALTER_XHL ADD ( DDD NUMBER DEFAULT 8 NOT NULL) ;

直接执行的后果是业务全被阻塞,可以用10046跟踪下上面语句是如何执行的。

1. 在不需要更改已有纪录新增字段值的情况下(保持已有记录新增字段为NULL),可将上面语句分开3步执行: ALTER TABLE ALTER_XHL ADD (DDD NUMBER ); -----不影响已有记录 ALTER TABLE ALTER_XHL MODIFY(DDD DEFAULT 8 ); -----不影响已有记录,只对新增记录有效 ALTER TABLE ALTER_XHL

 add CONSTRAINT ck_null_alter_test CHECK (DDD is not null) ENABLE NOVALIDATE ; -----不影响已有记录(已有记录DDD字段可以为NULL),只对新增记录有效(新增记录DDD 不为NULL)

2.如果原记录新增字段要设成DEFAULT 值,在没有停机维护时间的情况下,只能采用批量手动更新的方式来达到目的

批量更新数据,可以参考:快速批量更新数据
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值