优化表不会在表突变后立即运行

omjgkv6w  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(398)

我正在用表突变更新一个表,如下所示:

ALTER TABLE T1 
UPDATE column1 = replaceAll('X', 'Y')

在那之后,我要 optimize-final 命令 clickhouse-client 这样地:

OPTIMIZE TABLE T1 FINAL

Ok.

0 rows in set. Elapsed: 0.002 sec.

但它马上就回来了( 0.002 sec. )我可以看到行还没有更新。
几秒钟后(10-50),我运行 optimize-final 命令,但这次它将挂起,直到表得到优化。
这是我们的预期行为吗 optimize-final ?

guicsvcw

guicsvcw1#

我可以看到行还没有更新。 ALTER TABLE T1 UPDATE --异步
你应该检查一下 select count() from system.mutations where not is_done; 你的变异完成了。
在下一个版本中,您可以同步运行突变 ALTER TABLE T1 UPDATE column1 = replaceAll('X', 'Y') SETTINGS mutations_sync = 2 “u sync,0”,等待同步执行alter table update/delete查询(突变)。0-异步执行。1-等待当前服务器。2-等待所有副本(如果存在)。
优化t1最终表
优化-- merge 与突变无关。
集合中有0行。已用时间:0.002秒。
在某些情况下 OPTIMIZE 无法启动并立即返回
使用optimize\u throw\u if\u noop查找原因

set optimize_throw_if_noop = 1;
OPTIMIZE TABLE T1 FINAL;

相关问题