【问题标题】:refresh materialized view periodically postgres定期刷新物化视图 postgres
【发布时间】:2018-04-11 07:08:29
【问题描述】:

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

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

我遇到了一个 postgres 插件,用于安排作业 link

【问题讨论】:

  • 一个 cron 作业是一个很好的方法,它没有任何问题
  • 谢谢,@a_horse_with_no_name,我只是想积极主动,因为我无法考虑所有可能的情况,并且视图失败将付出高昂的代价。

标签: sql postgresql postgresql-9.3


【解决方案1】:

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

脚本是:

#!/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 中必要的信任认证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2017-06-15
      • 2020-12-03
      • 1970-01-01
      • 2020-01-31
      相关资源
      最近更新 更多