Mysql 反映两个数据集之间的记录删除/添加
我目前有一个3m记录表,需要每晚更新。 填充此表的数据来自约100个API,所有API都被标准化为一个巨型表 问题: 如何在源位置反映添加的新记录和删除的记录 事实: 我不能每天晚上都把桌子截断再插进去。 每个API为每个记录提供一个常量ID(这样我就可以跟踪记录内容)。 一些字段将每晚更新 解决方案: 新记录很容易,我只需将它们添加到我的表中,并带有一个可用的起始日期。 更新也很容易,对于每个记录,我都会检查它是否存在,以及数据是否发生了变化(性能会很差) 被删除的记录是我被卡住的地方。 API只是向我转储了大量数据,我如何判断记录是否已“丢失”Mysql 反映两个数据集之间的记录删除/添加,mysql,differential-execution,Mysql,Differential Execution,我目前有一个3m记录表,需要每晚更新。 填充此表的数据来自约100个API,所有API都被标准化为一个巨型表 问题: 如何在源位置反映添加的新记录和删除的记录 事实: 我不能每天晚上都把桌子截断再插进去。 每个API为每个记录提供一个常量ID(这样我就可以跟踪记录内容)。 一些字段将每晚更新 解决方案: 新记录很容易,我只需将它们添加到我的表中,并带有一个可用的起始日期。 更新也很容易,对于每个记录,我都会检查它是否存在,以及数据是否发生了变化(性能会很差) 被删除的记录是我被卡住的地方。 AP
我在考虑某种类型的交换表-有什么想法吗?如果判断某个记录是否已被删除的唯一方法是检查api是否再次提供该记录,而不知道您要查找的确切记录,则需要跟踪iPort。如果始终执行完全导入: 解决方案1: 为数据库中的每一行设置一个标志,然后导入并更新您获得的每一行的标志,然后删除所有未更新的内容 解决方案2: 为每次导入设置导入ID(绑定到日期?),并将其写入数据库条目。所以您知道哪一行来自哪一个导入。使用最新导入的导入id覆盖现有数据。 然后,只能使用上次导入的数据
但是如果你总是进行完整导入,那么在之前删除所有内容应该会更快,不是吗?谢谢,我选择了第一种解决方案。解决方案2可能更整洁(我可以使用stats等创建导入对象),但我添加了一个lastdowated列。然后,一个单独的过程清除旧行。完全导入将销毁在别处引用的表ID。