首页 > 数据库技术 > 详细

PostgreSQL定时刷新物化视图的一种简单方法

时间:2018-11-08 15:35:28      阅读:272      评论:0      收藏:0      [点我收藏+]

PostgreSQL 9.3开始支持物化视图,9.4又增加了非阻塞的CONCURRENTLY选项,但REFRESH时却不支持类似START WITH ... NEXT ...的定时刷新选项。

如何实现定时刷新物化视图?百度的结果主要是以下三种:

  • 借助操作系统,如Linux/Unix的crontab或Windows的定时任务;
  • 借助插件pgAgent;
  • 使用触发器,一般为语句级(... FOR EACH STATEMENT ...)。

近日接触到\watch命令,发现了一种新的刷新物化视图的方法。

不多解释,直接上示例代码:

-- 创建物化视图
CREATE MATERIALIZED VIEW MAX_ID_MVIEW 
AS
  SELECT PART_ID, MAX(ID)  MAX_ID
  FROM PART_DETAIL GROUP BY PART_ID;
  
-- 如果刷新时不带CONCURRENTLY则无需创建唯一索引
CREATE UNIQUE INDEX IDX_MAX_ID ON MAX_ID_MVIEW(PART_ID);

-- 利用watch命令每120s刷新一次物化视图
REFRESH MATERIALIZED VIEW CONCURRENTLY MAX_ID_MVIEW; \watch 120

经测试有效,但缺点是需保持在psql窗口一直运行。

PostgreSQL定时刷新物化视图的一种简单方法

原文:https://www.cnblogs.com/wggj/p/9929184.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!