注意:表结构变更的坑--大表添加有default值字段

生产环境中,经常会因为系统迭代升级而修改表结构。
如果遇到了对大表做添加有default值字段的操作,一定要格外注意,因为这个操作相当于在添加字段之后做update default value的动作,导致添加字段很慢,而且会将表加上排它锁,阻碍其他dml语句执行。
变更SQL示例:

alter table scott.test1 add new_col varchar(8) default 'testcol';

绕坑方法:如果新加字段带有not null约束就会很快执行完毕。
这是11g对 新增“not null & default”字段 进行了优化,默认值以及对应的表信息、列信息一起存储在一个新增数据字典表ecol$中,所以建议开发人员,如果业务允许,最好将后添加的带有默认值的字段设置为not null。
通常的业务逻辑下,有默认值的字段都不会被重置为null,即增加not null约束不会影响原业务逻辑。

测试:


Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容