永久访问时,数据库多表更新

时间:2017-06-08 18:56:32

标签: mysql performance transactions locking

我在MySql数据库中有一组表,其中包含一组相关数据(总共50 000行,因此数量很少),这些数据一直在访问(700万/天)。定期(让我们说一天一次)我需要更新所有表中的所有数据(完全刷新)。

我考虑了两种可能性:

  • 使用交易,但我不确定它如何与读取/锁定一起使用

  • 使用版本控制:在所有表格中添加版本列,并将所有行设置在同一"刊物"使用相同的版本。下一个出版物将具有版本+ 1,然后可以删除较低版本的行。当前版本存储在参数表中,允许读取查询始终选择最新的可用版本。

有人试过两种解决方案吗?或者任何不同/更好的解决方案?

由于

1 个答案:

答案 0 :(得分:0)

替换整个表

CREATE TABLE new LIKE real;
populate `new` with the new stuff   --  the slow part
RENAME TABLE real TO old,
             new TO real;  -- atomic and fast.

替换整个数据库:对每个表执行上述操作,但在完成所有其他工作之前,请暂停执行RENAMEs。然后在一个RENAME TABLE语句中完成所有这些操作。

没有锁定,没有交易,没有任何东西。