定期刷新物化视图postgres
refresh materialized view periodically postgres
出于优化目的,我使用了物化视图,为了定期刷新它,我设置了一个 cron 作业,在我的例子中每三个小时运行一次每个周期 t。
我的问题是:
- 刷新实体化视图的最佳方式是什么?
- 如果使用 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.
中可能是必要的信任认证
出于优化目的,我使用了物化视图,为了定期刷新它,我设置了一个 cron 作业,在我的例子中每三个小时运行一次每个周期 t。 我的问题是:
- 刷新实体化视图的最佳方式是什么?
- 如果使用 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.
中可能是必要的信任认证