2016-02-23 63 views
0

單挑,我只能使用SQL來建立它。當新表進來時,從mysql表中移出舊記錄

我有一個名爲Stream的表。當我從外部源獲得新數據(批量插入)時,它們暫時存儲在流中(引擎=內存)。 Stream表中的每一行都有一個時間戳。當新插入發生時,我需要將任何超過30分鐘的數據移動到歷史記錄表(engine = myISAM)。什麼是最好的方法來處理它?我有點想使用觸發器,但不知道這是否是最佳解決方案。我想過有一個觸發器可以從插入表中刪除舊數據。但是,由於新數據以相同的時間戳進行批量處理,因此我不想遍歷每個單獨插入的整個表格。我希望它在批量插入完成後執行刪除操作。如果我使用像Python這樣的編程語言來插入,更新,我可以使用它來跟蹤應用程序狀態。但由於除了SQL之外我不能使用其他任何東西,所以我有點碰壁了。

+0

創建一個觸發器,用於遷移舊記錄並使其批量運行,以便不鎖定表。 –

回答

0

我寧願使用mysql內置的task scheduler,並每30分鐘安排一個事件,將超過30分鐘的記錄移動到不同的表中。在批量插入期間,您可以暫停事件以防止歸檔操作與批量插入一致。