在这之前都直接用 SQL 来建立 表结构和字段,在 rails 里看教程都是用 migrate 来管理表结构。
这边有两个问题:
那你用 SQL 来跟新表结构,一样会锁表啊!
真正到了那些会锁表的情况(上几百万行的数据的表)一般都是手工处理表结构,而不是用 Migration 了,Rails Migration 适用于中小型数据的场景,便于开发者多个本地服务器之间统一表结构,也能在绝大多数生产环境,数据量巨大的场景的表结构变动上面用。
在之前,我一般是用 SQL 先把要修改的表结构先处理好
我想知道是怎么处理的?
楼主提出的“提前修改表结构”是不能很好应对部署出错的,回滚版本的时候,migration 一起回滚,是很好的实践,保证了数据库和代码的匹配。 如果有更复杂的情况,比如遗留数据处理,手工写任务处理。
所以要有 staging server。 大量锁表就老老实实停站维护咯,放在半夜没人的时候部署就行了,预告下停个十几分钟。