过去 24 小时内的物化视图

Eri*_*k L 4 oracle materialized-view

我正在收集具有关联时间戳的空间点数据。我想创建过去 24 小时内这些数据的视图。因为我是通过 ArcGIS 服务器管道这些空间数据,所以存在与在直视图中管道相关的性能问题(该视图可以轻松包含 100-200k+ 点)。长话短说,为了缓解这些性能问题,我创建了数据的物化视图。但是,我希望此数据每 3 - 4 分钟更新一次。

我的问题是,当我将 current_timestamp 添加到查询时:

SELECT * 
FROM points 
WHERE timestamp > current_timestamp - interval '24' hour
Run Code Online (Sandbox Code Playgroud)

...这不再可以用作快速刷新。有什么办法可以纠正这个问题,还是总是完全刷新?如果显示,在更新物化视图的性能方面我应该注意什么(同样,这个数据集很容易达到 100-200k 点,每秒添加 3-6 个点)。

Jus*_*ave 7

可快速刷新的物化视图不能包含像current_timestamp. 因此,如果要在物化视图中物化过去 24 小时的数据,则物化视图每次都需要进行完整刷新。

你需要物化视图吗?您能否维护自己的临时表并创建一个每隔几分钟运行一次的自定义作业,删除现在超过 24 小时的数据,并插入新数据(通过直接查询表或创建写入新数据的触发器)数据到不同的表)?如果您需要使用物化视图的查询重写功能,这可能是一个非入门者,但如果您只想获得更小的表进行查询的好处,那么自定义代码可能更有效。

或者您是否可以按天对表进行分区,以便过去 24 小时的查询始终只访问最近的两个分区?

  • 确保您考虑这对重做的影响。 (2认同)