Mysql
MySQL - 在表中歸檔數據
我是保險應用程序的開發人員。我們正在使用帶有 MySQL 實施的 AWS RDS。我們想要的場景是自動將數據從一個表歸檔到另一個表。像這樣的東西:
假設您有一個名為 user_profile 的表。您想在另一個表中記錄每個使用者配置文件的更改歷史記錄,假設我們稱之為 user_profile_history。每當對主表進行更新時,RDS 是否可以從主 user_profile 表實時移植到其歷史表?
最終情況是,user_profile 表只包含最新的使用者數據。配置文件的所有其他過去快照都在歷史記錄表中。
我做了盡職調查並做了一些研究,有可能的選擇:
- MySql 事件調度器
- 定時任務
- 分區
我的問題是,您認為哪個最適合這種情況?還是我錯過了其他更好的?目前,主表中的記錄數以百萬計(大約 1500 萬),每天添加約 5k 條記錄。這就是為什麼我們決定為它創建一個單獨的歷史/存檔表,以便能夠將一些舊的過時數據轉移到一個單獨的表中。
正如mustaccio所提到的,我認為觸發器是你最好的選擇。有多種選擇:
創建 BEFORE INSERT 觸發器 創建 AFTER INSERT 觸發器 創建 BEFORE UPDATE 觸發器 創建 AFTER UPDATE 觸發器 創建 BEFORE DELETE 觸發器 創建 AFTER DELETE 觸發器
選擇你想要的一個,或者全部:D,你可以控制它。
我更喜歡在最初儲存數據時這樣做。兩張表:
History
包含所有數據,包括剛剛收到的數據。範例:您所有的銀行對賬單都在一個列表中。
Current
包含截至目前的資訊。範例:您目前的餘額。
History
包含重建 中的內容所需的所有數據Current
。