当新记录进入时,从mysql表中移动旧记录

时间:2016-02-23 00:31:12

标签: mysql sql database

抬头,我只能使用SQL构建它。

我有一个名为Stream的表。当我从外部源获取新数据(批量插入)时,它们暂时存储在流(引擎=内存)中。 Stream表中的每一行都有一个时间戳。当新的插入发生时,我需要将任何超过30分钟的数据移动到历史表(engine = myISAM)。接近它的最佳方法是什么?我有点想使用触发器,但不知道这是否是最佳解决方案。我想过有一个触发器可以删除插入表中的旧数据。但是,由于新数据是以具有相同时间戳的批处理方式出现的,因此我不想为每个插入项循环遍历整个表。我希望在批量插入完成后让它执行删除操作。如果我使用像python这样的编程语言来插入,更新,我可以使用它来跟踪应用程序状态。但由于除了SQL之外我无法使用其他任何东西,我还是会碰壁。

1 个答案:

答案 0 :(得分:0)

我宁愿使用内置task scheduler的mysql,并且每30分钟安排一次事件,将超过30分钟的记录移动到另一个表。在批量插入期间,您可以暂停事件以防止存档操作与批量插入重合。