我正在尝试使用每天刷新一次视图的策略在超表上创建一个连续的聚合视图。
当我创建视图时它第一次运行很流畅,在 Grafana 上一切看起来都很好。然而,几天后,我发现后台作业大多失败,因此只汇总了部分数据。我试图通过使用以下查询来查找发生了什么,但仍然完全不知道为什么作业失败了!
SELECT *
FROM timescaledb_information.job_stats
WHERE hypertable_name = '_materialized_hypertable_17';
我得到的只是
超表模式 | 超表名 | job_id | last_run_started_at | last_successful_finish | 上次运行状态 | 工作现状 | last_run_duration | 下一个开始 | 总运行次数 | 总成功 | total_failures |
---|---|---|---|---|---|---|---|---|---|---|---|
_timescaledb_internal | _materialized_hypertable_17 | 1013 | 2021-09-05 10:46:11.810904 | 2021-09-01 11:53:41.759126 | 失败的 | 预定的 | 0 年 0 月 0 天 0 小时 0 分钟 0.022373 秒 | 2021-09-08 09:38:41.833277 | 5 | 2 | 3 |
所以我尝试刷新那些丢失的桶的视图。该命令在几毫秒内完成,并说视图已经是最新的,但事实并非如此!那些部分聚合的存储桶根本没有更新。
CALL refresh_continuous_aggregate('daily_system_agg', '2020-09-01', '2020-09-06');
总之,我有两个问题:
1. 我在哪里可以找到有关后台作业失败原因的更多信息?
2. 为什么refresh_continuous_aggregate
没有刷新数据?
创建连续聚合和策略的脚本
CREATE MATERIALIZED VIEW daily_requests_agg
WITH (timescaledb.continuous) AS (
SELECT
time_bucket('1 day', timestamp) as time,
gway,
dest,
api,
count(*) as total
FROM requests
GROUP BY
time,
gway,
dest,
api
);
SELECT add_continuous_aggregate_policy('daily_requests_agg',
start_offset => INTERVAL '1 month',
end_offset => INTERVAL '1 day',
schedule_interval => INTERVAL '1 day');