微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Clickhouse - TTL - merge_with_ttl_timeout 不影响列 ttl

如何解决Clickhouse - TTL - merge_with_ttl_timeout 不影响列 ttl

我尝试在 ttl 列上进行实验。为此,我创建了一个具有低 ttl 列的表并更改了 ttl 频率,我将 merge_with_ttl_timeout 添加为 5 秒。但表从来没有(~ 1 小时)得到更新。即使我像下面这样从配置文件中更改了全局 ttl 超时,也没有帮助。

<merge_tree>            
    <merge_with_ttl_timeout>10</merge_with_ttl_timeout>
</merge_tree> 

检查:

select * from system.merge_tree_settings where name like '%ttl%';

表 ddl:

CREATE TABLE example_table
(
    d DateTime,a Int TTL d + INTERVAL 5 SECOND,b Int TTL d + INTERVAL 10 SECOND,c String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
ORDER BY d
SETTINGS merge_with_ttl_timeout=5;

Manuel 命令强制 ttl 更新(单独工作):

  1. 选项:ALTER TABLE example_table MODIFY COLUMN b String TTL d + INTERVAL 2 SECOND;

  2. 选项:ALTER TABLE example_table MATERIALIZE TTL;

另一方面,表 ttl 就像一个魅力(它按时更新):

CREATE TABLE example_table2
(
    d DateTime,a Int,b Int,c String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
TTL d + INTERVAL 6 SECOND 
ORDER BY d
SETTINGS merge_with_ttl_timeout=5;

总而言之,我想观察列 ttl 是否自动工作,我该如何实现?

Clickhouse 版本:20.12.5.14

解决方法

也许执行

OPTIMIZE TABLE example_table2 FINAL;

在每个 SELECT 之前,如此处建议的 TTL documentation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。