亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么需要添加條件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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號