现在做不服务情况下表结构调整方面的摸底。 先从一个最简单的情况入手。 给一个简单的表(没有外键关联)在最后新加一个字段, 这个字段有默认值, 这样从逻辑上不影响此表中已有记录行。 这样, 针对这个问题, 最先想到的原始想法是直接通过alter语句加一个字段。 有些疑问:1, 这样新加字段可能会有什么问题? 从业务逻辑上讲,可以行的通, 但在具体影响上可能会有哪些呢?
2, 看了Facebook的开源实现OSC,它是先新建一个表,跟要改的表一模一样, 再在新表上新加字段, 再把原表里的数据导到新表中。 看似有些绕, 但应该是有它的道理的。 请问, 我那种粗糙的想法, 跟Facebook OSC的想法的差距有哪些?
避免锁表。
并且,直接ALTER TABLE,MYSQL本身的操作,就是锁表,然后创建一个新表,把数据复制到新表,删除原表,更改新表名为原表名。释放表锁