我想尝试了解ClickhouseOPTIMIZE
中查询的性能。
我计划在从 a 批量插入后立即使用它删除重复项MergeTree
,因此我可以选择:
OPTIMIZE TABLE db.table DEDUPLICATE
或者
OPTIMIZE TABLE db.table FINAL DEDUPLICATE
我知道第一个状态仅在插入尚未合并的情况下对插入进行重复数据删除,而第二个状态将对整个表执行重复数据删除。但是我担心性能;从OPTIMIZE TABLE db.table FINAL DEDUPLICATE
对不同大小表的脏分析中,我可以看到随着表变大(0.1M 行为 0.1s,0.3M 行为 1s,10M 行为 12s),它会呈指数级恶化。我假设OPTIMIZE TABLE db.table DEDUPLICATE
是基于插入大小和表大小,所以应该更具性能吗?
谁能指出一些关于这些表演的文献?
此外,如果我用 替换表,这些问题会消失ReplacingMergeTree
吗?我想同样的过程会在幕后发生,所以不管怎样都无所谓。