我在MySql数据库中有一组表,其中包含一组相关数据(总共50 000行,因此数量很少),这些数据一直在访问(700万/天)。定期(让我们说一天一次)我需要更新所有表中的所有数据(完全刷新)。
我考虑了两种可能性:
使用交易,但我不确定它如何与读取/锁定一起使用
使用版本控制:在所有表格中添加版本列,并将所有行设置在同一"刊物"使用相同的版本。下一个出版物将具有版本+ 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
语句中完成所有这些操作。
没有锁定,没有交易,没有任何东西。