检查物化视图的上次刷新时间

我有一个称为price\u changes的物化视图,用于一些报告。我还得到了一个cron任务,通过refresh-materialized-view-price\u-changes刷新物化视图。一切都很顺利

我想给查看报告的用户一条消息“数据从X开始是新的”。当cron运行时,我可以将其存储在某个地方,但postgres是否已经将此元数据存储在某个地方了

从9.3.4开始,我认为系统中没有任何内置的东西提供这种功能。当我需要提供上次刷新的日期时,我会在物化视图中的select查询中添加一个名为“last_refresh”的列,因为物化视图中的数据在刷新之前不会更改

出于安全原因,我也更喜欢这样做,因为如果信息存储在系统表中,您可能不想让sql用户访问系统表

根据您是否需要时间,您可以使用:

  1. 当前日期
  2. now()

日期:

创建物化视图mv\U地址作为
选择*,当前\u日期作为上次\u从地址刷新

日期和时间:

创建物化视图mv\U地址作为
选择*,now()作为上次从地址刷新

更新2017-02-17:

PostgreSQL 9.4+版现在同时包含选项。如果同时使用刷新物化视图选项,请注意@Smudge在注释中指示的内容。这实际上只是大型且经常更新的数据集的问题。如果您的数据集很小或很少更新,那么您应该不会有问题

发表评论