日期:2014-05-16  浏览次数:20725 次

不关闭服务情况下,给一表加字段时, 注意事项?

现在做不服务情况下表结构调整方面的摸底。 

先从一个最简单的情况入手。 给一个简单的表(没有外键关联)在最后新加一个字段, 这个字段有默认值, 这样从逻辑上不影响此表中已有记录行。 

这样, 针对这个问题, 最先想到的原始想法是直接通过alter语句加一个字段。  

有些疑问:

1, 这样新加字段可能会有什么问题? 从业务逻辑上讲,可以行的通, 但在具体影响上可能会有哪些呢?
2, 看了Facebook的开源实现OSC,它是先新建一个表,跟要改的表一模一样, 再在新表上新加字段, 再把原表里的数据导到新表中。 看似有些绕, 但应该是有它的道理的。 请问, 我那种粗糙的想法, 跟Facebook OSC的想法的差距有哪些?

------解决方案--------------------
引用1, 这样新加字段可能会有什么问题? 从业务逻辑上讲,可以行的通, 但在具体影响上可能会有哪些呢?

------解决方案--------------------
在ALTER 表时,要独占打开表,造成锁表,一般是建立临时表(新结构)再导入旧表数据