Timescale Cloud:性能、规模、企业级
自托管产品
MST
连续聚合表可以有多种不同的刷新策略。除了使用策略自动刷新连续聚合表外,您还可以手动刷新它。
连续聚合表需要一个策略才能自动刷新。您可以根据不同的用例进行调整。例如,即使数据从超表中移除,您也可以使连续聚合表和超表保持同步。或者,即使源数据从超表中移除,您也可以将其保留在连续聚合表中。
您可以通过调用 add_continuous_aggregate_policy
来更改连续聚合表的刷新方式。
add_continuous_aggregate_policy
接受以下参数(等等):
start_offset
:刷新窗口的开始时间,相对于策略运行时end_offset
:刷新窗口的结束时间,相对于策略运行时schedule_interval
:刷新间隔(分钟或小时)。默认为 24 小时。
请注意以下事项:
如果您将
start_offset
或end_offset
设置为NULL
,则范围是开放式的,并延伸到时间的开始或结束。如果您将
end_offset
设置在当前时间分桶内,则此分桶将从物化中排除。这样做有以下原因:- 当前分桶不完整,无法刷新。
- 当前分桶按时间戳顺序写入大量数据,其聚合结果会很快过时。排除它可以提高性能。
要在查询中包含最新的原始数据,请启用实时聚合。
有关所需和可选参数的完整列表以及使用示例,请参阅API 参考。
在
psql
提示符下,创建一个名为conditions_summary_hourly
的新策略,该策略使连续聚合表保持最新,并每小时运行一次:SELECT add_continuous_aggregate_policy('conditions_summary_hourly',start_offset => NULL,end_offset => INTERVAL '1 h',schedule_interval => INTERVAL '1 h');
此示例中的策略确保连续聚合表中的所有数据与超表保持最新,但最近一小时内写入的任何数据除外。它也不刷新连续聚合表的最后一个时间分桶。因为它具有开放式的 start_offset
参数,所以从表中删除的任何数据(例如通过 DELETE 或 drop_chunks
)也将从连续聚合视图中删除。这意味着连续聚合表始终反映底层超表中的数据。
如果您希望即使数据从底层超表中移除也将其保留在连续聚合表中,则可以将 start_offset
设置为与源超表的数据保留策略匹配。例如,如果您有一个保留策略,该策略会删除超过一个月的数据,则将 start_offset
设置为一个月或更短。这会将您的策略设置为不刷新已删除的数据。
在
psql
提示符下,创建一个名为conditions_summary_hourly
的新策略,该策略将从超表中删除的数据保留在连续聚合表中,并每小时运行一次:SELECT add_continuous_aggregate_policy('conditions_summary_hourly',start_offset => INTERVAL '1 month',end_offset => INTERVAL '1 h',schedule_interval => INTERVAL '1 h');
注意
在设置连续聚合策略时,考虑您的数据保留策略非常重要。如果连续聚合策略窗口覆盖了数据保留策略删除的数据,则当这些分桶的聚合刷新时,数据将被删除。例如,如果您有一个数据保留策略会删除所有两周前的数据,则连续聚合策略将只包含最近两周的数据。
如果您需要手动刷新连续聚合表,可以使用 refresh
命令。这会重新计算自上次刷新以来底层超表中已更改窗口内的数据。因此,如果只有几个分桶需要更新,刷新会运行得很快。
如果您最近从具有连续聚合表的超表中删除了数据,则对包含已删除块的区域调用 refresh_continuous_aggregate
会重新计算聚合,但不包含已删除的数据。有关更多信息,请参阅删除数据。
refresh
命令接受三个参数:
- 要刷新的连续聚合视图的名称
- 刷新窗口开始的时间戳
- 刷新窗口结束的时间戳
只有完全位于指定范围内的分桶才会被刷新。例如,如果您指定 '2021-05-01', '2021-06-01'
,则只刷新到(但不包括)2021-06-01 的分桶。在手动刷新中可以指定 NULL
以获得开放式范围,但我们不建议使用它,因为您可能会无意中物化大量数据,降低性能,并对数据保留等其他策略产生意外后果。
要手动刷新连续聚合表,请使用
refresh
命令:CALL refresh_continuous_aggregate('example', '2021-05-01', '2021-06-01');
遵循自动化刷新策略所使用的逻辑,避免刷新可能存在大量写入的时间分桶。这意味着您通常不应刷新最新的不完整时间分桶。要在查询中包含最新的原始数据,请改用实时聚合。
关键词