天天看點

Clickhouse-表引擎的一些應用心得-重命名能力問題場景問題排查問題總結後續問題

問題場景

(1)所有表使用:MergeTree

(2)使用者對某表 table1 進行大量更新操作(1w+條UPDATE操作)

(3)查詢頁面部分資料異常

(4)運維側定位到clickhouse故障,無法啟動

問題排查

(1)初始版本上線未使用clickhouse Replicated功能,無法在從節點恢複資料。

(2)磁盤中可以看到 table1 下存在大量mutation檔案。

(3)删除mutation檔案檔案,clickhouse重新開機成功。

問題總結

Mutation操作

(1)ClickHouse 提供了 DELETE 和 UPDATE 的能力,這類操作被稱為 Mutation 查詢。

(2)Mutation能最終實作修改和删除,是異步實作,沒有事務控制。

(3)Mutation 語句是一種“很重”的操作,更适用于批量資料的修改和删除,單條資料的UPDATE 操作代價是高昂的。

副本引擎

(1)所有表使用:MergeTree 引擎,沒有備份能力;後續調整為備份引擎:Replicated功能。

後續問題

(1)ReplicatedMergeTree引擎對資料無法去重,導緻資料成倍增加,統計數值成倍累加。

(2)最後,重新定義表格引擎,采用副本去重引擎:ReplicatedReplacingMergeTree

(3)每次全量導出資料時,可能會先truncate表資料,存在一段時間查詢空缺。

建議使用clickhouse表重命名能力,導出完成後,重命名臨時表為新表。

重命名指令:

rename table db1.table1 to db1.table2;