背景:
本地是POSTGRE数据库,上游是SQLSERVER数据。逻辑是定时取本地最新的时间,去上游取大于该最新时间的数据同步下来。结果发现同步数据不对。
问题1:明明已经从上游取下来了最新数据存到本地了,然后下一次去取数据,用最新时间取上游数据,结果取到了同样的VIN数据下来了。猜想可能是上游数据精确到秒更小的单位了,但是本地又只保存精确到秒,导致不断的取同样的数据下来
问题2:上一轮同步还同步到了2022-01-11的数据,下面不知道为什么拿到了2021-12-24的时间去上游取数据,正确来说应该每次取得本地库最新得数据。怀疑是sqlserver和postgre时间格式有点问题
问题3:程序报内存溢出。估计查询语句执行得有问题,一次性从上游取了2W条数据缓存到本地,然后该程序得内存占用达到了100多M,导致直接内存爆了。
解决方案:
不用本地数据最新时间去上游取数据了,用自增长ID去上游取,每次将上游得自增长ID存到本地,然后每次取本地最大自增长ID,每次同步100条数据,就最大自增长ID加100,去上游取最大自增长ID到最大自增长ID加100的查询语句取数据下来同步。