我有一个MySQL数据库,其中包含一个表,该表填充了大约150万行数据,需要每5分钟完全刷新一次。一旦超过5分钟,就不再需要这些数据。
将数据放入表中是没有问题的......我可以在大约50-70秒内填充它。我遇到麻烦的地方是弄清楚如何将所有旧数据移出并用新数据替换它。我需要能够在整个数据集中随时运行查询。这些查询需要非常快速地运行,并且它们必须一次只包含来自一个数据集的数据(即,查询不应该在更新表的1分钟内提取新旧数据的组合)。
我在处理大型临时数据集方面没有太多经验,所以我很感激如何最好地解决这个问题。
答案 0 :(得分:0)
创建分区。然后,您可以在用户从另一个分区查询时填充一个分区。
要手动执行此操作,您只需要......
CREATE TABLE tbl0 (blah)
CREATE TABLE tbl1 (blah)
CREATE TABLE meta (combined_source INT)
INSERT INTO meta VALUES (0)
CREATE VIEW combined AS
SELECT * FROM tbl0 WHERE 0 = (SELECT combined_source FROM meta) % 2
UNION ALL
SELECT * FROM tbl1 WHERE 1 = (SELECT combined_source FROM meta) % 2
现在,您可以将新数据插入“无效”状态。表格和WON' T出现在视图中。
接下来,增加meta
中的值。视图立即从显示一个表中的数据切换到显示另一个表中的数据。
在下一次迭代中,您只需检查meta
以确定要清空哪个表并将新数据加载到其中。
这种方法的一个好处是您甚至不需要在交易中。