使MySQL数据库与轮询数据保持同步

时间:2014-01-11 00:16:13

标签: php mysql sql database pdo

我有一个有趣的情况,我不断从服务器轮询数据。我无法控制它提供的内容,所以我只需要处理它给我的内容。

我正在记录它提供的一些信息,并将其存储在MySQL数据库中。这不是一个真正的问题,但是,我的问题是如何有效地保持数据与数据库同步。

例如,在某一点上,我可以有3个ID 1001,1002,1003。我可以将这些插入到数据库中,但是如果我现在有1001和1003那会是什么呢。什么是最有效的更新方式数据库反映这个?基本上,我只知道我现在拥有什么,而且我没有办法知道在没有用PHP计算自己的情况下发生了什么变化。

我想我可以SELECT,找到差异,然后为丢失/添加的ID发出DELETE / INSERT。或者也许是DELETE NOT IN()然后是INSERT ..但是因为这个脚本一直在运行,所以我担心这不会很有效。

我的另一个想法是简单地为每个“玩家”制作一行,其中包含CSV分隔的ID列表。每次迭代我都可以更新该播放器的行,而不是SELECT / DELETE / INSERT。

有没有人遇到类似的问题并找到了一个好的解决方案或有一些见解?我将不胜感激!我正在使用PHP。

2 个答案:

答案 0 :(得分:0)

如果我得到你的要求,也许你可以试试REPLACE INTO

http://www.mysqltutorial.org/mysql-replace.aspx

如果您要插入的记录不存在,则MySQL REPLACE会插入新记录。

如果您要插入的记录已存在,则MySQL REPLACE首先删除旧记录,然后插入新记录。

这将使您远离选择,删除和修饰。这处理。

答案 1 :(得分:0)

如果你能够截断整个表并重新加载它,你就可以做到。

OR

创建一个临时表,其中包含新数据

将原始表与临时表连接,并删除临时表中不存在的行

OR

使用编程语言,识别原始表中不再需要的ID并删除它们