定期刷新物化视图(PostgreSQL)

15

为优化目的,我正在使用一个物化视图,并设置了一个定时任务来周期性地刷新它,每个周期 t 在我的情况下是每三个小时一次。

  1. 最佳的刷新物化视图的方法是什么?
  2. 如果使用定时任务来刷新物化视图,会有哪些问题?

我发现了一个Postgres插件可以用来调度任务 链接


3
一个 cron job 是一个很好的方式来实现这个,它没有任何问题。 - user330315
谢谢@a_horse_with_no_name,我只是想尽可能地积极主动,因为我无法考虑到所有可能的情况,而视图的失败将是代价高昂的。 - rachid el kedmiri
1
你可以考虑使用 https://github.com/citusdata/pg_cron。 - Rémi Desgrange
2个回答

13

最好的方式是定期执行一个脚本来完成任务:

该脚本为:

#!/bin/sh
psql -U user_name -d database_instance_name -c 'refresh materialized view view_name'

然后在crontab中添加一个条目,类似于:

@hourly  /full_path/script_name.sh

2
此外,pg_cron 扩展可以用于 Linux 安装。以下是我使用的示例,每 5 分钟刷新一次;
INSERT INTO cron.job (schedule, command, nodename, nodeport, database, username)
VALUES ('*/5 * * * *', 'REFRESH MATERIALIZED VIEW public.mv_anyquery', 
'127.0.0.1', 5432, 'geodb', 'postgres');

nodename(127.0.0.1)可能需要在pg_hba.conf中进行信任认证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接