为了账号安全,请及时绑定邮箱和手机立即绑定

为什么需要添加条件updata_time<NOW() ?

update_time>:sql_last_value order by update_time DESC  和  update_time>:sql_last_value and update_time<NOW() order by update_time DESC  查询的结果不是一样的吗?

正在回答

2 回答

假设第一次扫描结束时,时间节点为t1,而且这个时间节点有两条数据A和B,其中B没扫到,如果后面还是按大于t1扫描,就会漏掉B。


如果我们的策略是第一次扫描直接放弃t1时间节点的数据,即update_time<now()。这样下次扫描就可以扫到了,因为sql_last_value是小于t1的,update_time>:sql_last_value就包含了A和B。


简而言之,往前看一个步骤就可以理解了。

1 回复 有任何疑惑可以回复我~
#1

木头年糕

第一次扫描结束时时间节点为t1,那么下一次扫描时使用的sql_lat_value不就是t1么?此时过滤条件里又是update_time>:sql_last_value,不就相当于update_time>t1,那不是第二次又把t1时间节点的数据放弃掉了么。
2022-04-15 回复 有任何疑惑可以回复我~

这个考虑的应该是极端情况.就是这条sql执行的当前时间正好有多条数据入库,比如有100条数据正在入库,但是这个sql只扫描到了50条.但是这个时候当前时间已经被记录为sql_last_value,下次执行的时候,条件是大于sql_last_value,就会丢失上一次没有扫描到的50条.所以这里加多一个条件小于当前时间,就是当前入库的数据,都不同步到es中,下次再同步过去.

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么需要添加条件updata_time<NOW() ?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信