更新大數據的表結構的緩和做法


場景

前些天遇到一個問題,要往線上數據庫中數據量比較大的表格里添加新的字段,以及賦上默認值,
執行的時間比較長,如果直接在原表格的基礎上直接執行sql,害怕會將表格甚至是數據庫弄成死鎖。
和團隊兄弟聊了聊找到了一種辦法,不知道的也可以借鑒一下。

解決辦法

復制表結構到臨時表

CREATE TABLE t_bdcards_temp LIKE t_bdcards;

給臨時表格添加一個字段

ALTER TABLE t_bdcards_temp
ADD COLUMN bookId BIGINT (80) NULL
DEFAULT NULL
COMMENT '對應的書籍id' AFTER user_id;

將源表格的數據插入到臨時表格中

INSERT INTO t_bdcards_temp (
card_num,
STATUS,
ctime,
user_id,
bookId
) SELECT
card_num,
STATUS,
ctime,
user_id,
100031
FROM
t_bdcards;

驗證數據是否正確

SELECT
count(id)
FROM
t_bdcards_temp;

SELECT
count(id)
FROM
t_bdcards;

將源表名修改成另外一個名詞

RENAME TABLE t_bdcards TO t_bdcards_blank;

將臨時表格修改成源表格的名稱

RENAME TABLE t_bdcards_temp TO t_bdcards;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM