定期刷新物化视图postgres

refresh materialized view periodically postgres

出于优化目的,我使用了物化视图,为了定期刷新它,我设置了一个 cron 作业,在我的例子中每三个小时运行一次每个周期 t。 我的问题是:

  1. 刷新实体化视图的最佳方式是什么?
  2. 如果使用 cron 作业刷新实体化视图会出现什么问题?

我遇到了一个可以安排作业的 postgres 插件 link

最好的方法是定期执行执行任务的脚本:

脚本是:

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

并在 crontab 中添加一个条目,例如:

@hourly  /full_path/script_name.sh

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.

中可能是必要的信任认证