1. 程式人生 > >大表如何在線新增字段?

大表如何在線新增字段?

創建 字段 重做 begin ble 新增 target 執行 表數

如何用更少的時間,在線新增字段? 理論步驟:   假如主數據庫為A庫,表為a表,現在是20190404 12點
  1.利用A庫的全備+事務備,恢復到 20190404 12點(假如用了3個小時) ,恢復成一個新庫B庫
  2.記錄A.a表的更新、刪除、插入等操作到A.c
  3.用select * into A.b from B.a ,在A庫構建新表,表數據復制完後創建索引等等(假如花費1小時)
  4.現在,時間到了2019040416點。而A.b表,只是少了12點到16點這4個小時的業務數據操作
  5.然後鎖A.a表(可以開一個事務),防止新數據。然後開始利用A.c表的記錄,對A.b表進行重做即可。   6.釋放A.a表鎖,直接重命名
 --註意點,考慮自增列。可以在第3步做完後加上去(若是不行就用insert into select的方式,開一下identity_insert即可)
  4個小時的操作,只是重做,很快吧,如果這段時間沒有太多,我就算它幾十萬次單行操作,這也就幾分鐘搞完了吧? 實操: 1、這個很簡單就不說啦 2、利用觸發器記錄表的DML(https://www.cnblogs.com/gered/p/10656016.html) 3、簡單,都寫清楚了 4、無需操作 5、鎖表   begin     select * from table with(holdlock) -- 參考鎖(https://www.cnblogs.com/gered/p/9147204.html 中的第四大點) 6、 5中窗口事務直接commit即可,或者rollback   提取出2中保存的SQL,執行即可

大表如何在線新增字段?