Mysql

MySQL - 在表中歸檔數據

  • August 11, 2022

我是保險應用程序的開發人員。我們正在使用帶有 MySQL 實施的 AWS RDS。我們想要的場景是自動將數據從一個表歸檔到另一個表。像這樣的東西:

假設您有一個名為 user_profile 的表。您想在另一個表中記錄每個使用者配置文件的更改歷史記錄,假設我們稱之為 user_profile_history。每當對主表進行更新時,RDS 是否可以從主 user_profile 表實時移植到其歷史表?

最終情況是,user_profile 表只包含最新的使用者數據。配置文件的所有其他過去快照都在歷史記錄表中。

我做了盡職調查並做了一些研究,有可能的選擇:

  1. MySql 事件調度器
  2. 定時任務
  3. 分區

我的問題是,您認為哪個最適合這種情況?還是我錯過了其他更好的?目前,主表中的記錄數以百萬計(大約 1500 萬),每天添加約 5k 條記錄。這就是為什麼我們決定為它創建一個單獨的歷史/存檔表,以便能夠將一些舊的過時數據轉移到一個單獨的表中。

正如mustaccio所提到的,我認為觸發器是你最好的選擇。有多種選擇:

創建 BEFORE INSERT 觸發器 創建 AFTER INSERT 觸發器 創建 BEFORE UPDATE 觸發器 創建 AFTER UPDATE 觸發器 創建 BEFORE DELETE 觸發器 創建 AFTER DELETE 觸發器

選擇你想要的一個,或者全部:D,你可以控制它。

另請參閱本教程: https ://www.mysqltutorial.org/mysql-triggers

我更喜歡在最初儲存數據時這樣做。兩張表:

History包含所有數據,包括剛剛收到的數據。範例:您所有的銀行對賬單都在一個列表中。

Current包含截至目前的資訊。範例:您目前的餘額。

History包含重建 中的內容所需的所有數據Current

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