当前位置: 代码迷 >> Sql Server >> 关于大表schema批改
  详细解决方案

关于大表schema批改

热度:57   发布时间:2016-04-24 10:16:02.0
关于大表schema修改
现在有张大概10亿记录 将近100G 表,有时候要修改表结构,例如修改字段类型,长度, 增加新的字段。
在数据库设计的时候,我们可以预留几个字段 以防后面新增加字段需求,但是对于修改字段长度,类型,有下面几个问题:
1 Alter table alter column 每次只能修改一个字段,如果修改多个字段?
2 Alter table 原理是什么?
   像MYSQL 大致是先复制到临时表,删除原表,然后重命名, SQL Server呢?
3 对于生产库 上的 DDL 操作,有什么好的优化方式 ?
------解决方案--------------------
引用:
现在有张大概10亿记录 将近100G 表,有时候要修改表结构,例如修改字段类型,长度, 增加新的字段。
在数据库设计的时候,我们可以预留几个字段 以防后面新增加字段需求,但是对于修改字段长度,类型,有下面几个问题:

1 Alter table alter column 每次只能修改一个字段,如果修改多个字段?
一次修改一个字段, 多个字段的修改,也是一样,分步一个一个处理。


2 Alter table 原理是什么?
   像MYSQL 大致是先复制到临时表,删除原表,然后重命名, SQL Server呢?

参考备注部分 http://technet.microsoft.com/zh-cn/library/ms190273(v=sql.105).aspx

3 对于生产库 上的 DDL 操作,有什么好的优化方式 ?


这个目前在sql server上,我觉得最好的办法,还是测试优先。在实际使用中的其它方法,都会有这样那样的问题。测试优先,可以让问题在扩大化之前,进行有效解决。 对应实际的生产环境的影响也较小。

这里的测试,不仅仅是测试库中的完整测试,也包括在运行环境下的先导测试。

参考!

------解决方案--------------------
1 Alter table alter column 每次只能修改一个字段,如果修改多个字段?
--> 修改多个字段时需多写几个alter table alter column语句..

2 Alter table 原理是什么?
   像MYSQL 大致是先复制到临时表,删除原表,然后重命名, SQL Server呢?
--> SQL Server的alter table语句包含很多功能,如新增字段,修改字段数据类型,长度,修改表约束等.
     其执行原理各不相同.

3 对于生产库 上的 DDL 操作,有什么好的优化方式 ?
--> 在系统闲时执行.
  相关解决方案