GaussDB云数据库SQL应用系列-定时任务管理

news2025/4/8 23:46:20

前言

GaussDB数据库定时任务主要可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等,它是指在指定的时间间隔内自动执行一次或多次SQL语句的程序。

一、GaussDB数据库定时任务介绍

GaussDB数据库兼容Oracle定时任务功能主要通过DBE_TASK高级功能包提供的二次封装接口实现(另可参见GaussDB提供的基础接口PKG_SERVICE,此接口也可实现定时任务创建),主要包括创建定时任务、任务到期自动执行、任务删除、修改任务属性(任务id、任务的关闭开启、任务的触发时间、触发时间间隔、任务内容)等。

创建(提交)一个定时任务:

CALL DBE_TASK.ID_SUBMIT (job_id,task_name,start_time,interval_time)

  • job_id:作业号,指定job_id创建任务,其中job_id可用范围为1~32767。
  • task_name:要执行的SQL语句。支持一个或多个‘DDL’(不支持DB相关操作),‘DML’,‘匿名块’,‘调用存储过程的语句’或4种混合的场景。
  • start_time:任务的开始时间,可以使用 sysdate 表示立即执行。
  • interval_time:任务的执行间隔,例如 'interval ''1 day''' 表示每天执行一次。

需要注意的是,该功能需要在具有相应权限的数据库会话中运行,并且需要替换相应的任务名称和其他参数。此外,该功能只是提交一个定时任务,并不会立即执行任务。任务的执行时间由start_time和interval_time参数控制。

二、创建GaussDB定时任务(场景+示例)

根据GaussDB数据库定时任务应用场景,创建测试表及定时任务。

1、设置应用场景

数据备份和恢复:例如,根据业务需要,按天备份数据库中的一张日销售信息表(累全量)。(Tips:以下是模拟一个简单的业务场景,实际生产环境时,对应的字段、更优的业务逻辑处理方式,请以真实场景为准。)

1)创建测试表

创建一张日销售信息表(sell_info)和一张销售信息全量表(sell_info_full),其中包含字段有:销售编号、销售日期、商品编号、商品名称、商品数量、商品售价。全量表sell_info_full比表sell_info多一个任务执行日期字段(etl_date)。

--日销售信息表(sell_info)

CREATE TABLE sell_info

(

sell_id int PRIMARY KEY

,sell_date date not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_number int not null

,sell_goods_amount int not null

);

--插入一条测试数据

INSERT INTO sell_info(sell_id,sell_date,goods_id,goods_name,goods_number,sell_goods_amount) VALUES (1001,date'2023-06-02','g_001','g_001',10,10);

--销售信息全量表(sell_info_full),

CREATE TABLE sell_info_full

(

sell_id int PRIMARY KEY

,sell_date date not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_number int not null

,sell_goods_amount int not null

,etl_date date not null

);

2)创建存储过程,用于定时任务调度

--创建存储过程 sell_info_full_pro

CREATE PROCEDURE sell_info_full_pro()

IS

BEGIN

--累加存放每日销售信息数据

INSERT INTO sell_info_full(

sell_id

,sell_date

,goods_id

,goods_name

,goods_number

,sell_goods_amount

,etl_date)

SELECT sell_id

,sell_date

,goods_id

,goods_name

,goods_number

,sell_goods_amount

,sell_date as etl_date

FROM sell_info;

--清空日销售信息表

TRUNCATE TABLE sell_info;

END;

/

3)创建定时任务

任务目标:通过创建定时任务, 每天在销售系统关闭后(22:00)进行累全操作,假设job启动日期是2023-06-02,则提交一个定时任务如下:

call dbe_task.id_submit(1,'call sell_info_full_pro();','2023-06-02 22:00:00','interval ''1 day''')

4)查看已创建的任务

select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from my_jobs;

其中字段及其参数说明见下文第3节第1点。

5)查看执行结果

根据业务逻辑,查看相应的结果(此处略)。测试时可将定时“2023-06-02 22:00:00”改成立刻执行“sysdate”,然后查看执行结果。

2、更多适用场景

1)数据清理和优化:例如,定期归档(清理)数据库中的无用数据、过期数据和重复数据,并对数据库进行性能优化,以提高数据库的运行效率和稳定性。

2)数据统计和分析:例如,根据业务需求,定期从数据库中提取数据并进行统计和分析,以便为企业决策提供支持。

3)定时任务通知:例如,通过定时任务向用户发送邮件、短信或其他通知信息,提醒用户关注某些重要的业务活动或事件。

4)定时更新状态:例如,商品定时开售,活动到期自动修改为已结束状态,活动结束商品自动下架,超过三十分钟未支付自动取消订单,到期自动解冻账号。

……

三、管理GaussDB定时任务

1、查看已创建的任务

通过MY_JOBS视图查看当前用户所属的定时任务详情

--查看当前用户所属的定时任务详情

select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from my_jobs;

MY_JOBS视图为当前用户所属定时任务的详细信息,其字段含义参见下表:

名称

类型

描述

job

bigint

作业ID。

log_user

name

创建者的UserName。

priv_user

name

作业执行者的UserName。

dbname

name

作业创建数据库名称。

schema_user

name

定时任务的默认模式。

start_date

timestamp without time zone

作业的开始时间。

start_suc

text

作业成功执行的开始时间。

last_date

timestamp without time zone

上次运行开始时间。

last_suc

text

上次成功运行的开始时间。

last_sec

text

上次成功运行的开始时间,提供兼容性支持。

this_date

timestamp without time zone

正在运行任务的开始时间。

this_suc

text

正在运行任务成功的开始时间。

this_sec

text

正在运行任务成功的开始时间,提供兼容性支持。

next_date

timestamp without time zone

任务下次执行时间。

next_suc

text

任务下次成功执行时间。

next_sec

text

任务下次成功执行时间,提供兼容性支持。

total_time

numeric

任务最近一次的执行时长。

broken

text

如果任务状态为破,则为'y',否则为'n'。

status

"char"

执行状态,取值范围:('r', 's', 'f', 'd'),默认为'r',取值含义:r=running、s=successfully finished、f= job failed、d=aborted

interval

text

用来计算下次运行时间的时间表达式,如果为null则表示定时任务只执行一次。

failures

smallint

失败计数,作业连续执行失败16次,不再继续执行。

what

text

可执行的作业。

2、停用/启用任务

语法格式:

call dbe_task.finish(id, broken, next_time);

1)停用任务, 是将对应任务挂起,不做任何操作。

call dbe_task.finish(1,true);

2)启用任务,则是将任务正常启动, 按任务设置执行相应的SQL语句或程序

call dbe_task.finish(1,false,'2023-06-02 22:00:00');

3、修改任务

1)DBE_TASK.UPDATE——修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。

2)另,可分别且单独修改其参数内容:

DBE_TASK.CONTENT ——修改可执行的SQL语句块

DBE_TASK.NEXT_TIME——修改下次执行时间属性

DBE_TASK.INTERVAL——修改执行时间间隔

4、删除任务

DBE_TASK.CANCEL——删除指定的定时任务。

小结:以上所有管理过程,均以任务作业号为唯一键进行操作。

四、总结

GaussDB数据库提供了丰富的定时任务功能。需要注意的是,定时任务的设置和使用需要谨慎,避免误删重要数据或影响业务正常运行。同时,也需要保证定时任务的可靠性和稳定性,避免出现任务漏执行或执行重复的情况。

总之,在使用GaussDB数据库时,创建定时任务可以在很多场景中应用,同时可以帮助我们提高系统的运行效率和方便性等。

——结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

POSTGRESQL PSQL 命令中如何使用变量带入查询和函数

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

chatgpt赋能python:Python如何删除已经写好的代码?

Python如何删除已经写好的代码? 在编程中,大多数时候写出来的代码都是需要保留的。但是,随着项目的发展和需求的变化,有些代码可能就没有用了。这时,我们需要删除这些无用的代码,以保持程序的简洁性和效率…

Nginx、location匹配、Rewrite重写模块

Nginx、location匹配、Rewrite重写模块 一、常用的Nginx正则表达式二、location匹配概述1、location大致可以分为三类2、location常用的匹配规则3、location 优先级4、location 示例说明5、实际网站使用中,至少有三个匹配规则定义 三、rewrite重写1、rewrite 跳转场…

记录--JavaScript 中有趣的 9 个常用编码套路

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1️⃣ set对象:数组快速去重 常规情况下,我们想要筛选唯一值,一般会想到遍历数组然后逐个对比,或者使用成熟的库比如lodash之类的。 不过,ES…

Spark RDD分区

文章目录 一、RRD分区(一)RDD分区概念(二)RDD分区作用 二、RDD分区数量(一)RDD分区原则(二)影响分区的因素(三)使用parallelize()方法创建RDD时的分区数量1、…

软件测试之环境搭建—苏汽web系统测试环境搭建

一、搭建环境的准备工作 1、安装好RedHat,输入用户名:root,密码:123456,右键点击桌面,打开终端输入“ifconfig”查询IP地址 2.打开xshell,点击文件,选择新建连接,在输入…

【数据分析之道-Matplotlib(七)】Matplotlib直方图

文章目录 专栏导读1、hist()基本语法2、使用 hist() 函数绘制多个数据组的直方图3、修改直方图的颜色及边框颜色4、六一儿童节为主题,使用直方图进行可视化 专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享pyth…

POI报表的高级应用

POI报表的高级应用 掌握基于模板打印的POI报表导出理解自定义工具类的执行流程 熟练使用SXSSFWorkbook完成百万数据报表打印理解基于事件驱动的POI报表导入 模板打印 概述 自定义生成Excel报表文件还是有很多不尽如意的地方,特别是针对复杂报表头,单元格…

我们世界中的10个算法

下面的图表展示了我们日常生活中最常用的算法。它们被应用在互联网搜索引擎、社交网络、WiFi、手机甚至卫星等各个领域。 1.排序算法 排序算法用于将一组数据按照特定的顺序进行排列。它们被广泛应用于各种场景,如搜索引擎中的搜索结果排序、数据分析中的数据整理和…

转转前端周刊第六十八期

转转前端周刊 本刊意在将整理业界精华文章给大家,期望大家一起打开视野 如果你有发现一些精华文章想和更多人分享,可以点击我们的公众号名称,将文章链接和你的解读文案发给我们!我们会对内容进行筛选和审核,保留你的推…

基于TensorFlow Object Detection API实现RetinaNet目标检测网络(附源码)

文章目录 一、RetinaNet简介1. Backbone网络2. FPN网络 二、RetinaNet实现1. tf.train.CheckPoint简介2. RetinaNet的TensorFlow源码 一、RetinaNet简介 RetinaNet是作者Tsung-Yi Lin和Kaiming He于2018年发表的论文Focal Loss for Dense Object Detection中提出的网络。Retina…

运维小白必学篇之基础篇第十六集:DNS架构FTP实验

DNS架构FTP实验 目录 DNS架构FTP实验 服务端 客户端 服务端 在ftp架构了安装dns域名服务 yum -y install bind 配置主配置文件 vim /etc/named.conf listen-on port 53 { 192.168.50.1; }; allow-query { 192.168.50.0/24; }; 配置区域文件 vim /etc/named.rfc1912.zones…

深聊丨“紫东太初”大模型背后有哪些值得细读的论文(一)

原创:谭婧 没有人想等待,没有人想落伍。 新鲜论文时兴火热,成为大模型发展迅猛的标志之一,人们用“刷论文”这个游荡意味的动词替代另一个颇为严肃的动作,“读论文”。 论文被当作“教材”和“新知识”,在a…

矢量网络分析仪RS罗德与施瓦ZNB8 9KHZ至8.5GHZ德国二手

Rohde & Schwarz ZNB8网络分析仪,8.5 GHz,2 或 4 端口 ​罗德与施瓦茨 ZNB8 Rohde & Schwarz ZNB8 矢量网络分析仪具有高达 140 dB(10 Hz IF 带宽)的宽动态范围、低于 0.004 dB RMS(10 kHz IF 带宽&#xff…

React--Component组件浅析

目录 一 前言二 什么是React组件?三 二种不同 React 组件1 class类组件2 函数组件 四 组件通信方式五 组件的强化方式六 总结 一 前言 在 React 世界里,一切皆组件,我们写的 React 项目全部起源于组件。组件可以分为两类,一类是类…

驱动开发:内核扫描SSDT挂钩状态

在笔者上一篇文章《驱动开发:内核实现SSDT挂钩与摘钩》中介绍了如何对SSDT函数进行Hook挂钩与摘钩的,本章将继续实现一个新功能,如何检测SSDT函数是否挂钩,要实现检测挂钩状态有两种方式,第一种方式则是类似于《驱动开…

【Unity-UGUI控件全面解析】| Layout自动布局组件详解

🎬【Unity-UGUI控件全面解析】| Layout自动布局组件详解一、组件介绍二、组件属性面板2.1 布局元素 (Layout Element)2.2 水平布局组 (Horizontal Layout Group)2.3 垂直布局组 (Vertical Layout Group)2.4 网格布局组 (Grid Layout Group)三、代码操作组件四、组件常用方法示…

把 AI 装进即时通讯,会发生什么?

今年以来,AIGC 技术以“天”为单位快速进化,刷足了存在感。科技公司迅速将 AI 嵌入自家的产品中,追逐 AI 带来的生产力变革,解决日益复杂的需求。从文学到音乐,从绘画到编程,无一领域不受其影响。 在这些领…

网络编程(1)

获取本网络信息相关接口 接口说明: QHostInfo类为主机信息,为主机名查找提供静态函数 QHostAddress类为主机地址类,管理IPV4或IPV6地址信息。 QNetworkInterface类为网络接口类,提供主机IP地址和网络接口的列表。 QNetworkAd…

关于人生,爱情和事业,谈谈我的人类史观(视频在最后)

前几天在知乎上回答了一个问题,没想到一下子好像火了,评论超过五百,也有各种质疑,其中有一个人的问题我觉得值得探讨,因为在回答中,我写下了一段也许值得留存的文字。 视频里面有更多的内容的扩展&#xff…