一、Clickhouse的物化視圖
今天來簡單介紹一下clickhouse的物化視圖
物化視圖與普通視圖的區別:
普通視圖不保存數據,保存的僅僅是查詢語句,查詢的時候還是從原表讀取數據,可以將普通視圖理解為是個子查詢,物化視圖則是把查詢的結果根據相應的引擎存入到了磁盤或內存中,對數據重新進行了組織,你可以理解物化視圖是完全的一張新表。
物化視圖支持表引擎,數據保存形式由它的表引擎決定,創建物化視圖的完整語法如下:
create materialized view mv_log engine=Log populate as select * from log;
物化視圖創建好之后,如果源表被寫入新數據,那么物化視圖也會同步更新。populate 決定了物化視圖的初始化策略:如果使用了populate 修飾符,
那么在創建視圖的過程中,會連帶將源表中已存在的數據一並導入,如同執行了 insert select 一般;反之,如果不使用 populate 修飾符,那么物化視圖在創建之后是沒有數據的,
它只會同步在此之后被寫入源表的數據。
注:生產中並不建議使用 populate關鍵字來修飾,歷史數據可以通過insert into的方式來進行導入
物化視圖目前並不支持同步刪除,如果在源表中刪除了數據,物化視圖的數據仍會保留。
create materialized view test3_view engine = Log populate as select * from tb_test3;
-- 建表的時候同步數據,當數據被更新以后,物化視圖中的數據會同步更新,但是當刪除數據以后,物化視圖中的數據不會被刪除。