因爲業務需求,用到了以前建表的預留字段,可是所需欄位的字段長度較長,須要修改預留字段的長度。在測試庫上進行了修改測試,測試庫的數量是3千萬量級的,操做過程當中數據庫會進行批量鎖死,處理時間大於兩個小時(修改的字段是varchar類型,且長度從64擴展到512,耗時主要跟單條記錄的數據寬度有關)。sql
表的鎖死是生產環境鎖不能接受的,尤爲是這麼長的時間。因而建了一張新的表,知足擴展字段,修改字段長度的需求。而後選擇在凌晨將凌晨之前的數據導入新表中,我是分紅小段插入的新表,語句以下,有四萬多條這樣的語句,寫個小demo提早生產.sql文件數據庫
INSERT INTO asset_record_copy (id, uid, uname,) SELECT id, uid, uname, FROM asset_record r WHERE AND r.time > '' LIMIT 19980000, 10000 INSERT INTO asset_record_copy (id, uid, uname,) SELECT id, uid, uname, FROM asset_record r WHERE AND r.time > '' LIMIT 19990000, 10000
而後把以前的表名進行切換,重啓新的服務就實現了改表結構的需求。在切換表名重啓服務的過程當中,會有兩三分鐘的中止對外服務。最後把拉下的不到一天的數據補上就行了。測試