openGauss如何创建和管理定时任务

本文介绍如何利用GaussDB(foropenGauss)创建、管理及执行定时任务,减轻运维负担。通过创建测试表、存储过程及定时任务,演示了任务的启动、停止、属性修改及删除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

定时任务管理

步骤 1 创建测试表:

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


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

CREATE TABLE


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

postgres=# CREATE OR REPLACE PROCEDURE PRC_JOB_1()
AS
N_NUM integer :=1;
BEGIN
FOR I IN 1..1000 LOOP
INSERT 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 修改任务属性:

  • 修改JOB的Next_date参数信息。

--修改Job1的Next_date为1小时以后开始执行。

postgres=# call dbe_task.next_time(1, sysdate+1.0/24);
next_date
-----------

(1 row)


  • 修改JOB的Interval参数信息。

--修改Job1的Interval为每隔1小时执行一次。

postgres=# call dbe_task.interval(1,'sysdate + 1.0/24');
interval
----------

(1 row)


  • 修改JOB的What参数信息。

--修改Job1的What为执行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)


  • 同时修改JOB的Next_date、Interval、What等多个参数信息。

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)

589d4a0584346cd59500b23009e323bd.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值