Timescale Cloud:性能、扩展、企业级
自托管产品
MST
通过将数据保留策略与连续聚合相结合,您可以对数据进行降采样。如果正确设置了刷新策略,您可以从超表中删除旧数据,而无需将其从任何连续聚合中删除。这使您可以在保留摘要数据以进行历史分析的同时节省原始数据存储空间。
警告
要在删除原始数据时保留聚合数据,您必须谨慎刷新聚合。只要您不刷新已删除数据上的聚合,就可以从基础表中删除原始数据而不会删除连续聚合中的数据。当您刷新连续聚合时,Timescale 会根据刷新窗口内原始数据的更改来更新聚合。如果它发现原始数据已被删除,它也会删除聚合数据。为防止这种情况,请确保聚合的刷新窗口不与任何已删除数据重叠。更多信息请参阅以下示例。
例如,假设您向存储设备温度的 conditions
超表添加一个连续聚合
CREATE MATERIALIZED VIEW conditions_summary_daily (day, device, temp)WITH (timescaledb.continuous) ASSELECT time_bucket('1 day', time), device, avg(temperature)FROM conditionsGROUP BY (1, 2);SELECT add_continuous_aggregate_policy('conditions_summary_daily', '7 days', '1 day', '1 day');
这将创建一个 conditions_summary_daily
聚合,用于存储每个设备的每日温度。该聚合每天刷新。每次刷新时,它都会更新过去 7 天到 1 天的数据更改。
您**不应**在 conditions
超表上设置 24 小时保留策略。如果这样做,早于 1 天的块将被删除。然后聚合将根据数据更改进行刷新。由于数据更改是删除早于 1 天的数据,聚合也会删除数据。最终 conditions_summary_daily
表中将没有数据。
要解决此问题,请设置更长的保留策略,例如 30 天
SELECT add_retention_policy('conditions', INTERVAL '30 days');
现在,早于 30 天的块将被删除。但是当聚合刷新时,它不会查找早于 30 天的更改。它只会查找 7 天到 1 天前的更改。原始超表仍然包含该时间段的数据。因此您的聚合会保留数据。
您也可以对连续聚合本身应用数据保留。例如,您可以如前所述保留原始数据 30 天。同时,您可以保留每日数据 600 天,超过此期限的数据将不予保留。
关键词