【问题标题】:How to schedule timing for a JOB in Postgres using pgagent如何使用 pgagent 在 Postgres 中安排 JOB 的时间安排
【发布时间】:2017-10-05 10:46:09
【问题描述】:

我使用 pgagent 创建了一个作业,我每 5 分钟安排一次,因为下面是代码:

DO $$
DECLARE
    jid integer;
    scid integer;
BEGIN
-- Creating a new job
INSERT INTO pgagent.pga_job(
    jobjclid, jobname, jobdesc, jobhostagent, jobenabled
) VALUES (
    1::integer, 'refresh_mobile'::text, ''::text, ''::text, true
) RETURNING jobid INTO jid;

-- Steps
-- Inserting a step (jobid: NULL)
INSERT INTO pgagent.pga_jobstep (
    jstjobid, jstname, jstenabled, jstkind,
    jstconnstr, jstdbname, jstonerror,
    jstcode, jstdesc
) VALUES (
    jid, 'refresh_mobile_mv_data'::text, true, 's'::character(1),
    ''::text, 'ICSPGD'::name, 'f'::character(1),
    'SELECT refresh_materialized_views(''mobile'');'::text, 'Please check. Issue occired while refreshing Mobile Data'::text
) ;

-- Schedules
-- Inserting a schedule
INSERT INTO pgagent.pga_schedule(
    jscjobid, jscname, jscdesc, jscenabled,
    jscstart, jscend,    jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths
) VALUES (
    jid, 'minutly'::text, ''::text, true,
    '2017-09-04 03:36:20-07'::timestamp with time zone, '2018-12-31 02:36:20-08'::timestamp with time zone,
    -- Minutes
    ARRAY[false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
    -- Hours
    ARRAY[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]::boolean[],
    -- Week days
    ARRAY[true, true, true, true, true, true, true]::boolean[],
    -- Month days
    ARRAY[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]::boolean[],
    -- Months
    ARRAY[true, true, true, true, true, true, true, true, true, true, true, true]::boolean[]
) RETURNING jscid INTO scid;
END
$$;

但是当我检查它的统计信息时(在 pgadmin 中)或通过查询“select * from pgagent.pga_job;”它表明作业以 1 小时的间隔运行。

例如:如果最后一个作业运行时间是 2017-10-05 03:05:00.703287-07 ,那么它显示的下一个运行时间是:2017-10-05 04 :05:00-07.

请提供时间参数。我想每天每隔 5 分钟运行一次这项工作。

问候,

【问题讨论】:

    标签: postgresql jobs job-scheduling pgagent


    【解决方案1】:

    你尝试过这样的事情吗?

    INSERT INTO pgagent.pga_schedule 
    (jscid, jscjobid, jscname, jscdesc, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths, jscenabled, jscstart, jscend)
    VALUES(<SchId>, 29, 'minutly', '', '{t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f}', '{f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', '{f,f,f,f,f,f,f}', '{f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', '{f,f,f,f,f,f,f,f,f,f,f,f}', true, '2017-10-07 00:00:00', NULL);
    

    基本上,这个插入所做的是标记每小时的分钟 0、5、10、15、20、25、30、35、40、45、50 和 55。

    我不知道您为什么要使用插入语句来创建它,因为 GUI 提供了一种非常简洁的方式来安排作业。使用 GUI 可以完成相同的配置,如下所示:

    希望对你有帮助:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2019-06-06
      • 2016-12-10
      相关资源
      最近更新 更多