暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【云小课】【第48课】GaussDB如何创建和管理定时任务

wanglei 2023-04-11
525

【云小课】【第48课】GaussDB如何创建和管理定时任务


【摘要】 当用户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以用户经常选择在晚上执行,这增加了用户的工作量。因此数据库GaussDB提供定时任务的功能,可以由用户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而可以减少用户户运维的工作量。GaussDB...

云小课必用.png

当用户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以用户经常选择在晚上执行,这增加了用户的工作量。因此数据库GaussDB提供定时任务的功能,可以由用户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而可以减少用户户运维的工作量。

GaussDB提供定时任务的创建、任务到期自动执行、任务删除、修改任务属性(包括:任务id、任务的关闭开启、任务的触发时间、触发时间间隔、任务内容等)。

定时任务管理

步骤 1 创建测试表:

postgres=# CREATE TABLE test(id int, time date);

当结果显示为如下信息,则表示创建成功。

CREATE TABLE

步骤 2 创建自定义存储过程:

postgres=# CREATE OR REPLACE PROCEDURE PRC_JOB_1()ASN_NUM integer :=1;BEGINFOR I IN 1..1000 LOOPINSERT INTO test VALUES(I,SYSDATE);END LOOP;END;/

当结果显示为如下信息,则表示创建成功。

CREATE PROCEDURE

步骤 3 创建任务:

  • 新创建的任务(未指定job_id)表示每隔1分钟执行一次存储过程PRC_JOB_1
postgres=# call dbe_task.submit('call public.prc_job_1(); ', sysdate, 'interval ''1 minute''', :a);job-----1(1 row)
  • 指定job_id创建任务,其中job_id可用范围为1~32767
postgres=# call dbe_task.id_submit(2,'call public.prc_job_1(); ', sysdate, 'interval ''1 minute''');isubmit--------- (1 row)

步骤 4 通过视图查看当前用户已创建的任务信息。

postgres=# select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from my_jobs;job | dbname |     start_date      |         last_date          |         this_date          |      next_date      | broken | status |      interval       | failures |           what-----+--------+---------------------+----------------------------+----------------------------+---------------------+--------+--------+---------------------+----------+---------------------------1 | postgres   | 2017-07-18 11:38:03 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:54:03 | n      | s      | interval '1 minute' |        0 | call public.prc_job_1();(1 row)

步骤 5 停止任务。

postgres=# call dbe_task.finish(1,true);broken-------- (1 row)

步骤 6 启动任务。

postgres=# call dbe_task.finish(1,false);broken-------- (1 row)

步骤 7 修改任务属性:

  • 修改JOBNext_date参数信息。

--修改Job1Next_date1小时以后开始执行。

postgres=# call dbe_task.next_time(1, sysdate+1.0/24);next_date----------- (1 row)
  • 修改JOBInterval参数信息。

--修改Job1Interval为每隔1小时执行一次。

postgres=# call dbe_task.interval(1,'sysdate + 1.0/24');interval---------- (1 row)
  • 修改JOBWhat参数信息。

--修改Job1What为执行SQL语句“insert into public.test values(333, sysdate+5);”。

postgres=# call dbe_task.content(1,'insert into public.test values(333, sysdate+5);');what------ (1 row)
  • 同时修改JOBNext_dateIntervalWhat等多个参数信息。
postgres=# call dbe_task.update(1, 'call public.prc_job_1();', sysdate, 'interval ''1 minute''');change-------- (1 row)

步骤 8 删除JOB

postgres=# call dbe_task.cancel(1);remove-------- (1 row)

最后修改时间:2023-04-11 14:35:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论