一緻性
CLK有個比較緻命的缺點就是資料一緻性的問題,CLK僅僅隻能保證資料的最終一緻性
比如CLK的去重MT

是以在使用CLK的時候,肯定也一定會出現短暫的資料不一緻的情況
解決方法:
- 手動OPTIMIZE
在表資料插入進來的時候,立馬執行OPTIMIZE強制觸發CLK的合并動作,這種方式雖然可以解決,但是對下遊的影響往往是非常大的,除非這張表隻有你一個人在使用,否則不建議這樣做
- GROUP BY + 視圖
衆所周知GROUP BY是去重的最簡單方式,那麼我們就可以對資料進行GROUP
BY操作,将查詢出來的結果集進行一個視圖的落地,這也是生産上用的比較多的方式
- FINAL關鍵字
這個方法我個人感覺并不太好,FINAL雖然可以解決資料重複的問題,但是FINAL的局限性比較多,列字段的大小,分區的數量等等因素都會影響到FINAL的性能
使用方法:
物化視圖
物化視圖是CLK的一個獨有的特性,其實就可以了解為一個臨時表,将一個結果集進行持久化操作,使用起來和表沒什麼差別
但是物化視圖和普通視圖還是有些差別的:
普通視圖不儲存資料,僅僅儲存的是查詢語句,使用普通視圖底層其實走的還是原表,但是物化視圖則是把查詢語句和查詢語句查出來的結果都給落地到磁盤或者記憶體中,視圖是虛無缥缈的,但是物化視圖是實實在在的
物化視圖的優點就是快,可以在結果集與結果集之間進行臨時結果的存放,但是物化視圖也并非是完美的,當資料變動的特别頻繁的時候,物化視圖就不太好用了,因為物化視圖的源資料也會随着原表的資料變動而變動,原表變動的太頻繁,物化視圖也會跟着變動,就會造成不必要的資源浪費