Mysql

覆蓋 MySQL 數據庫只儲存 1 個月的數據

  • March 8, 2022

我們在只有 4GB 的小記憶體(磁碟儲存不足)的硬體上記錄數據。

我們只要求將數據儲存 1 個月,然後以首先覆蓋舊數據的方式進行覆蓋。硬體上的記憶體很小,所以不能無限期地繼續記錄。

我們正在使用 MySQL 數據庫,它執行的硬體並不總是像在車輛中那樣通電。數據將在圖表中查看,以顯示一段時間內的歷史數據。

我想到了一些選項,但不確定如何執行它:

假設我將在一個月內記錄 100 萬行數據

當表 (table1) 達到 100 萬行時,將此表移動到另一個表並啟動新表 (table2)。當 table2 達到 100 萬行時。刪除 table1,將 table2 移動到新表並創建 table3 等…

這樣至少有 1 個月的參賽作品。

第二種選擇(不確定是否可能):

當表達到 100 萬行時,它再次從第 1 行開始覆蓋。

一個簡短的輪換腳本/事件可能如下所示:

drop table if exists table2;
rename table table1 to table2;
create table table1 like table2;

使用PARTITION BY RANGE(TO_DAYS(..)). DROP PARTITION每晚都有一個 cron 工作REORGANIZE PARTITION。這樣,您可以自動擁有一個包含不超過一天的“表格”。

詳情:http: //mysql.rjweb.org/doc.php/partitionmaint

引用自:https://dba.stackexchange.com/questions/258472