我们使用InnoDB引擎在MySql中存储了一个非常大的(10百万以上)行表。列'x'被定义为'smallint(5)unsigned not null'。InnoDB上的MySql数值类型迁移
自从几年前的原始设计以来,需求已经发生变化,而'x'列需要存储最小数据类型大小'int unsigned not null'。
我们被允许“短暂”停机以部署应用程序(少于5分钟),因此如果数据库表需要暂时以任何方式暂时不可用(例如,全表锁)。如果更改可以“在线”完成,那么我们可能会接受较长时间的性能下降。
有没有人有过在非常大的表上更改MySql/InnoDB中的列类型的经验?如果是这样,它是否行得通,大致需要多长时间(我意识到这是硬件依赖的,我只是想了解我们在时间窗口中要求做的事情是否甚至有可能)?
由于提前,
多久,当你在测试实验室应用到一个同样大小的桌子上生产高档五金没ALTER TABLE走? – MarkR 2011-05-31 19:18:22
@MarkR - 正在进行中,但可能需要一段时间才能将环境设置为脱离我的团队控制。因此,试图在此期间获得可行性的想法... – Scruffers 2011-05-31 19:48:22