我们有一个包含 5 亿行的表。不幸的是,其中一列是 int(11),它是一个有符号整数,它是一个递增的值,刚好超过 21 亿幻数。这立即导致大约 10.000 名用户停机。我们讨论了许多解决方案,并决定我们可以安全地回滚这个值,比如 10 亿。但是我们必须为每一行回滚它。
这是我们所做的:
更新 Table1 Set MessageId = case when MessageId < 1073741824 then 0 else MessageId - 1073741824 end;
我在一个有 1000 万行的表上测试了这个,花了 11 分钟。所以我假设更大的桌子需要 550 分钟,或 9 小时。这将是我们 3 年来最大的停机时间。(我们是一家初创公司)。现在是18小时。
我们应该做什么?
请不要说我们应该做什么。我认为我们应该一次更新几百万行。
有没有办法让我们看到进步?Mysql 可能挂了?使用 mysql 5.0.22。
谢谢!
归档时间: |
|
查看次数: |
312 次 |
最近记录: |