ClickHouse 更新操作

2021-10-05 15:21:18 字數 1074 閱讀 8303

clickhouse 更多應用在 查詢select  和寫入insert  上。 提供部分更新操作,但相比其他各大資料庫的更新操作來說,效果已經很好了,下面來詳細介紹一下 更新這一塊。

更新:1.

2.也可借用mutations  進行多行更新刪除操作。(根據where條件獲取需要修改的分割槽,通過構建新分割槽替代老分割槽實現更新操作 ,但對於大分割槽,預設150g的資料更新可能會消耗大量資源)  此操作不受server重啟影響,會執行至操作成功,可system.mutations 追蹤,kill mutation停止程序。

以上是針對單機表的更新操作,

3.針對集群錶可適用replacingmergetree 進行後台更新處理,搭配主鍵使用。存在相同主鍵資料時 取 distributed(version) 中 version 更大的版本資料。預設為空即最後寫入的資料,但實際實時數倉業務場景可能存在先到後到的問題,造成舊資料替換新資料的情況。因此version盡量選擇 原始資料的初始時間,避免更新錯誤(若時間精度達到毫秒級,則取clickhouse最後寫入的資料為最終結果)。若少量資料更新,也可使用optimize table  觸發更新修復操作,更快查詢更新結果。同時還有 select *from  final  的查詢方法。此方法只為查詢合併後的資料,但實際資料並沒有merge更新。僅為結構查詢使用。可能會影響查詢效能。有待使用者自行測試。

此引擎預設後台更新,但官方提示,不要過於依賴此引擎。即後台更新存在非同步性,不完整性。可能會造成一些誤差和延遲。我這裡每批資料大約會有極少量merge合併失敗,即相同資料儲存多條的情況,個人理解非同步merge跟資料量有一定關係。當資料達到了指定大小時 會觸發相同層tree data 會進行merge合併。葉子節點的資料層層向上合,至一定量停止。單批次寫入資料量越多,觸發merge機率也越大。但不能開多個執行緒,單條單條頻繁查詢,這樣不僅不會觸發頻繁merge 且會占用server資源。造成卡頓。少批次大批量更適合clickhouse。

實際應用中,各自業務需求不同,使用者需根據實際業務場景選擇更合適的更新方法。

但總體上,clickhouse 因為儲存上,批量資料直接寫入儲存檔案的原因,主要核心是查詢 ,而不是修改,儘量減少資料更改的操作。

clickhouse 部署 介紹

clickhouse是乙個用於聯機分析處理 olap 的列式資料庫管理系統 columnar dbms 傳統資料庫在資料大小比較小,索引大小適合記憶體,資料快取命中率足夠高的情形下能正常提供服務。但殘酷的是,這種理想情形最終會隨著業務的增長走到盡頭,查詢會變得越來越慢。你可能通過增加更多的記憶體,訂...

初步認識clickhouse

命令列客戶端 可以選擇使用互動式與非互動式 批量 兩種模式 互動模式 進入互動模式 clickhouse client 如果埠不是9000的,可以通過 port自行設定 clickhouse client port x 退出客戶端 exit 原生客戶端介面 tcp 可以從clickhouse源 進行...

ClickHouse集群安裝

vm15 ubuntu18.04 3 192.168.44.128 192.168.44.129 192.168.44.130 apt install openjdk 8 jre headless apt install openjdk 8 jdk headless zookeeper是乙個分布式的...