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

2023年 4月 29日 47.6k 0

PostgreSQL 9.3开始支持物化视图,9.4又增加了非阻塞的CONCURRENTLY选项,但REFRESH时却不支持类似START WITH ... NEXT ...的定时刷新选项。 如何实现定时刷新物化视图?百度的结果主要是以下三种

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窗口一直运行。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论