我想從MySQL表中提取增量更新。問題表中有一個自動遞增的ID字段,以及每次更改(INSERT/UPDATE)時更新爲當前時間戳的updated_at字段。記錄不會從這張表中刪除。從MySQL表中提取增量更新
我想從腳本的最後一次運行以來,從此表中提取所有新創建和更新的記錄。我知道最後一次運行的最高updated_at值。因此,提取記錄的主要查詢將如下所示:
SELECT * FROM table WHERE updated_at >= :last_seen_updated_at
實現此目的的最佳方法是什麼?我必須100%確定將提取所有新的和更新的記錄。一些問題和顧慮:其中一些
- 多個記錄可以在同一秒內被更新,其中一些可能已經被列入前提取來看,並非如此。 (例如:提取器運行在第二秒的前半部分,而記錄可能會在第二秒的後半部分更新。
- 我應該使用一個大的SELECT查詢還是應該使用多個查詢來提取批量的X記錄?請注意,要提取的數據量可能很大,如果我使用批處理,則記錄可能會在不同查詢之間更新。
- 最好不要提取重複記錄,但這不是一個大問題。有意義的最後一次露面更新之前開始的時間X量,「以防萬一」?(如
updated_at >= :last_seen_updated_at - INTERVAL 1 MINUTE
) - 我應該?重複讀運行什麼隔離模式下,這些疑問?SERIALIZABLE?
- MySQL的d atabase是一個複製的slave,它有時會滯後master DB。這會對包含或不包含的行產生任何影響嗎?