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;
上一篇:iOS - CocoaPods 第三方开源框架管理


下一篇:MYSQL SUBQUERY执行过程