【发布时间】:2021-04-29 21:49:43
【问题描述】:
我递归地创建了一个表和两个物化视图。
表:
CREATE TABLE `log_details` (
date String,
event_time DateTime,
username String,
city String)
ENGINE = MergeTree()
ORDER BY (date, event_time)
PARTITION BY date TTL event_time + INTERVAL 1 MONTH
物化视图:
CREATE MATERIALIZED VIEW `log_u_c_day_mv`
ENGINE = SummingMergeTree()
PARTITION BY date
ORDER BY (date, username, city)
AS
SELECT date, username, city, count() as times
FROM `log_details`
GROUP BY date, username, city
CREATE MATERIALIZED VIEW `log_u_day_mv`
ENGINE = SummingMergeTree()
PARTITION BY date
ORDER BY (date, username)
AS
SELECT date, username, SUM(times) as total_times
FROM `.inner.log_u_c_day_mv`
GROUP BY date, username
插入log_details → 插入log_u_c_day_mv → 插入log_u_day_mv。
log_u_day_mv 插入log_u_c_day_mv 15 分钟后即使超过一天也没有优化。
我尝试手动优化log_u_day_mv,它可以工作。
OPTIMIZE TABLE `.inner.log_u_day_mv` PARTITION 20210110
但是ClickHouse没有及时优化。 如何解决?
【问题讨论】:
-
考虑在 FROM 子句中使用 FINAL-modifier。
-
@vladimir 实体化视图不能有 PREWHERE、SAMPLE 或 FINAL..
-
@vladimir 谢谢。我理解你的建议。在 SELECT 查询中使用 FINAL。但它并没有优化 MV 以在后台执行预定的合并。
标签: clickhouse