我有两个托管在不同计算机上的数据库。一个客户端一台服务器在客户端,将不断捕获数据(每分钟最少10个条目),数据将上传到服务器进行进一步处理。客户端还偶尔会同步一些只能在服务器端更新的信息(例如产品信息)。例如:
CLIENT TABLE
product
product_ID| product_Name
1 | Tomato
2 | Potato
3 | Buritto
SERVER TABLE
product
product_ID | product_Name
1 | Tomato
3 | Zucchini
4 | Peas
好的,客户端将以单向方向从服务器读取产品表(无论服务器上有什么变化,客户端都会跟随)。我想这样做:
读取Server表上的所有内容,并使用INSERT ON DUPLICATE KEY UPDATE语句更新客户端表。例如:
INSERT INTO产品SET product_ID =(来自服务器),product_Name =(来自服务器)ON DUPLICATE KEY UPDATE product_Name =(来自服务器)
删除不在Server表上的所有内容。在此示例中,需要在Client表上删除产品ID 2(Potato)。
我怎样才能达到第二点?在新插入之前截断客户端表不是一种选择。我想到的另一个选择是扫描客户端表上的每一行并检查它是否存在于服务器表上。然而,这种方法非常缓慢且不受欢迎。任何人都可以放弃任何光线吗?