大表新增字段

在一個業務繁忙併且數據量巨大的環境中,新增一個字段對於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 值,在沒有停機維護時間的情況下,只能採用批量手動更新的方式來達到目的

批量更新數據,可以參考:快速批量更新數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章