Database 高效地将流式输入与大型SQL数据库同步
我手头有一个效率问题,我正在寻找解决办法。情况如下:Database 高效地将流式输入与大型SQL数据库同步,database,synchronization,Database,Synchronization,我手头有一个效率问题,我正在寻找解决办法。情况如下: 我有从在线来源进入系统的基于行的数据流,每个数据都有唯一的id 我有一个SQL数据库,包含现有的基于行的数据,通过id索引 如果SQL数据库与数据库中已有的数据不同,我需要使用新的数据流更新SQL数据库 显而易见的解决办法是: 读取传入行 读取数据库中相应的行 如果数据不同,请更新数据库 大量的往返使得该算法的速度非常慢 我拥有的另一种解决方案是将整个SQL数据库读入内存,并与新传入的数据进行比较。这消除了往返,但所需的内存也使其不可行
- 我有从在线来源进入系统的基于行的数据流,每个数据都有唯一的
id
- 我有一个SQL数据库,包含现有的基于行的数据,通过
索引id
- 如果SQL数据库与数据库中已有的数据不同,我需要使用新的数据流更新SQL数据库
如果第2步不可能有效地完成,这将不起作用 批处理似乎是一种解决方案。可以按方便的时间单位(比如10秒)进行批处理,也可以按方便的记录数(比如100秒)进行批处理。然后可以在数据库中进行比较,一切都会更快。@GordonLinoff结果证明我有一个幸运的优化。因为我只是用新数据更新数据库,所以我可以发出替换而不是插入,并让数据库处理覆盖。不需要往返,而且速度非常快。