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

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

时间:2024-09-27 14:27:13浏览次数:8  
标签:sell goods GaussDB id 任务 SQL date 定时 数据库

​ 前言

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数据库时,创建定时任务可以在很多场景中应用,同时可以帮助我们提高系统的运行效率和方便性等。

——结束

标签:sell,goods,GaussDB,id,任务,SQL,date,定时,数据库
From: https://www.cnblogs.com/xiaoxu0211/p/18435608

相关文章

  • GaussDB云数据库SQL应用系列-基础使用
    ​目录一、前言二、前提条件1、连接数据库实例2、GaussDB实例正常运行三、操作示例1、选择实例并进入SQL执行界面2、创建数据库用户3、创建数据库4、创建SCHEMA5、创建表(增删改查)1)创建3张表,并初始化一些数据2)假设查询场景,并通过SQL实现一、前言随着云计算技术的不......
  • GaussDB云数据库SQL应用系列-视图管理
    ​一、前言GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。二、准备条件参考......
  • GaussDB云数据库SQL应用系列—索引管理
    一、前言随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了企业面临的重要问题。而数据库索引作为数据库优化的关键手段之一,对于提高数据库性能和查询效率具有重要作用。本文将介绍GaussDB云数据库的索引创建和管理方法,并结合实际应用场景进行分析......
  • GaussDB整体性能慢分析
    @目录问题描述问题现象告警业务影响原因分析分析步骤分析定位方法步骤一步骤二步骤三步骤四CPU满I/O满或者I/O异常内存满网络异常步骤五并发问题数据库配置问题异常等待事件长时间性能下降短时性能抖动不优SQL问题描述整体性能慢。不满足客户作业对时延要求或者不满足客户预期。......
  • GaussDB SQL调优:建立合适的索引
    ​背景GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关......
  • PARTIV-Oracle数据库存储结构-内存架构
    14.内存架构14.1.Oracle是数据库内存结构简介当实例启动时,Oracle数据库会分配一个内存区域并启动后台进程。这个内存区域存储以下信息:程序代码每个已连接会话的信息,即使它当前未活跃程序执行期间需要的信息,例如,正在从中提取行的查询的当前状态锁数据等在进程间共享和通信......
  • 分布式数据库在老乡鸡餐饮中的技术实践
    业务背景:MySQL带来的三个技术瓶颈老乡鸡隶属于安徽老乡鸡餐饮股份有限公司旗下品牌,是以中式快餐为特色的连锁餐饮品牌,在全国有1000多家快餐店,从养土鸡起家,实现了从养殖到餐桌的全产业链模式。目前,北京、上海、深圳、杭州等一线城市都有门店,并以每年新增300家的速度发展。鸡类菜品......
  • GaussDB分区表查询性能异常分析
    问题现象使用分区表进行相关查询业务,SQL性能慢。原因分析导致分区表业务慢的常见原因有以下几种:分区索引失效,顺序扫描导致的SQL性能慢分区表无法进行分区剪枝导致的SQL性能慢SQL计划选择非最优导致的SQL性能慢处理方法判断是否存在索引异常的行为部分分区DDL如果不带UP......
  • GaussDB内存过载分析
    问题现象数据库进程内存占比较高长时间占比较高观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高数据库进程在没有业务执行时,内存使用持续处于较低的状态,当有业务执行时,内......
  • 《向量数据库指南》——向量数据库新纪元:跨越供应商锁定的
    在深入探讨供应商锁定对向量数据库领域非结构化数据迁移的影响时,我们不得不首先认识到,随着大数据和人工智能技术的飞速发展,向量数据库作为处理复杂、高维数据的有效工具,正逐渐成为企业数据架构中的关键组成部分。然而,这一领域的特殊性——尤其是向量数据的非结构化本质及其处理......