很快我们就需要对生产数据库进行架构更改.我们需要尽量减少这项工作的停机时间,但是,ALTER TABLE语句将运行很长一段时间.我们最大的表有1.5亿条记录,最大的表格文件是50G.所有表都是InnoDB,它被设置为一个大数据文件(而不是每个表的文件).我们在8核机器,16G内存和RAID10配置上运行MySQL 5.0.46.
我有一些MySQL调优的经验,但这通常集中在来自多个客户端的读取或写入.有关此主题的互联网上有很多信息,但是,关于(暂时)调整MySQL服务器以加速InnoDB表上的ALTER TABLE或INSERT INTO的最佳实践,似乎很少有信息可用. .SELECT FROM(我们可能会使用它而不是ALTER TABLE来获得更多机会来加快速度).
我们计划进行的架构更改是向所有表添加一个整数列,并将其作为主键,而不是当前主键.我们还需要保留"旧"列,因此不能覆盖现有值.
尽可能快地完成这项任务的理想设置是什么?
我有一个生产中有数百万行的SQL Server表,事实证明我需要为它添加一列.或者,为了更准确,我需要向表所代表的实体添加一个字段.
从语法上讲,这不是问题,如果表没有那么多行而且没有生产,这很容易.
我真正想要的是行动方案.有很多网站都有非常大的桌子,他们必须不时添加字段.如果没有大量的停机时间,他们怎么做?
我应该补充一点,我不希望列允许空值,这意味着我需要一个默认值.
所以我要么想弄清楚如何及时添加具有默认值的列,或者我需要找出一种方法以便稍后更新列,然后将列设置为不允许空值.