zoukankan      html  css  js  c++  java
  • 大表如何在线新增字段?

    如何用更少的时间,在线新增字段?
     
    理论步骤:
      假如主数据库为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,执行即可
     
     
  • 相关阅读:
    jquery target属性 语法
    jquery result属性 语法
    jquery preventDefault()方法 语法
    jquery pageY属性 语法
    jquery pageX属性 语法
    jquery pageX属性 语法
    jquery isDefaultPrevented()方法 语法
    jquery error()方法 语法
    jquery die()方法 语法
    jquery die()方法 语法
  • 原文地址:https://www.cnblogs.com/gered/p/10656056.html
Copyright © 2011-2022 走看看