我想从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。这会对包含或不包含的行产生任何影响吗?