任务调度表
# 1. 任务详细信息表 (QRTZ_JOB_DETAILS
)
表作用:
QRTZ_JOB_DETAILS
表存储每一个已配置的 JobDetail
的详细信息,这些信息包括任务名称、任务组、描述、执行类名等。该表记录了任务的元数据信息。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_JOB_DETAILS;
-- 创建任务详细信息表
create table QRTZ_JOB_DETAILS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
job_name varchar(200) not null comment '任务名称', -- Job的名称
job_group varchar(200) not null comment '任务组名', -- Job所属的组名
description varchar(250) null comment '相关介绍', -- Job的描述
job_class_name varchar(250) not null comment '执行任务类名称', -- Job执行类的全限定名
is_durable varchar(1) not null comment '是否持久化', -- Job是否需要持久化
is_nonconcurrent varchar(1) not null comment '是否并发', -- Job是否允许并发执行
is_update_data varchar(1) not null comment '是否更新数据', -- Job是否允许更新数据
requests_recovery varchar(1) not null comment '是否接受恢复执行', -- Job是否接受恢复执行
job_data blob null comment '存放持久化job对象', -- 持久化的Job数据
primary key (sched_name, job_name, job_group) -- 复合主键,确保任务的唯一性
) engine=innodb comment = '任务详细信息表';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
表之间的关系:
QRTZ_JOB_DETAILS
表是 Quartz 中任务的核心元数据表,与其他表如QRTZ_TRIGGERS
通过job_name
和job_group
字段进行关联,表示触发器触发哪个任务。
# 2. 触发器详细信息表 (QRTZ_TRIGGERS
)
表作用:
QRTZ_TRIGGERS
表存储已配置的 Trigger
的信息,这些信息包括触发器名称、组名、任务名称、任务组名、下次触发时间、触发器状态等。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_TRIGGERS;
-- 创建触发器详细信息表
create table QRTZ_TRIGGERS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
trigger_name varchar(200) not null comment '触发器的名字', -- 触发器的名称
trigger_group varchar(200) not null comment '触发器所属组的名字', -- 触发器所属的组名
job_name varchar(200) not null comment 'qrtz_job_details表job_name的外键', -- 对应的Job名称
job_group varchar(200) not null comment 'qrtz_job_details表job_group的外键', -- 对应的Job组名
description varchar(250) null comment '相关介绍', -- 触发器的描述
next_fire_time bigint(13) null comment '上一次触发时间(毫秒)', -- 下次触发时间
prev_fire_time bigint(13) null comment '下一次触发时间(默认为-1表示不触发)', -- 上次触发时间
priority integer null comment '优先级', -- 触发器的优先级
trigger_state varchar(16) not null comment '触发器状态', -- 触发器的状态
trigger_type varchar(8) not null comment '触发器的类型', -- 触发器的类型(如Simple, Cron)
start_time bigint(13) not null comment '开始时间', -- 触发器的开始时间
end_time bigint(13) null comment '结束时间', -- 触发器的结束时间
calendar_name varchar(200) null comment '日程表名称', -- 日历名称
misfire_instr smallint(2) null comment '补偿执行的策略', -- 触发器的Misfire策略
job_data blob null comment '存放持久化job对象', -- 持久化的Job数据
primary key (sched_name, trigger_name, trigger_group), -- 复合主键,确保触发器的唯一性
foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS(sched_name, job_name, job_group) -- 外键关联到QRTZ_JOB_DETAILS
) engine=innodb comment = '触发器详细信息表';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
表之间的关系:
QRTZ_TRIGGERS
表与QRTZ_JOB_DETAILS
表通过sched_name
,job_name
,job_group
进行外键关联,用于指定触发器关联的具体任务。
# 3. 简单触发器信息表 (QRTZ_SIMPLE_TRIGGERS
)
表作用:
QRTZ_SIMPLE_TRIGGERS
表用于存储简单类型的 Trigger
的信息,如重复次数、重复间隔时间和已触发次数等。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_SIMPLE_TRIGGERS;
-- 创建简单触发器信息表
create table QRTZ_SIMPLE_TRIGGERS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', -- 触发器名称
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', -- 触发器组名
repeat_count bigint(7) not null comment '重复的次数统计', -- 触发器的重复次数
repeat_interval bigint(12) not null comment '重复的间隔时间', -- 触发器的间隔时间
times_triggered bigint(10) not null comment '已经触发的次数', -- 触发器已触发的次数
primary key (sched_name, trigger_name, trigger_group), -- 复合主键,确保触发器的唯一性
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) -- 外键关联到QRTZ_TRIGGERS
) engine=innodb comment = '简单触发器的信息表';
2
3
4
5
6
7
8
9
10
11
12
13
14
表之间的关系:
QRTZ_SIMPLE_TRIGGERS
表通过sched_name
,trigger_name
,trigger_group
字段与QRTZ_TRIGGERS
表关联,记录简单触发器的额外信息。
# 4. Cron类型的触发器表 (QRTZ_CRON_TRIGGERS
)
表作用:
QRTZ_CRON_TRIGGERS
表用于存储 Cron
类型的 Trigger
信息,包括 Cron
表达式和时区信息。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_CRON_TRIGGERS;
-- 创建Cron类型的触发器表
create table QRTZ_CRON_TRIGGERS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', -- 触发器名称
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', -- 触发器组名
cron_expression varchar(200) not null comment 'cron表达式', -- Cron表达式
time_zone_id varchar(80) comment '时区', -- 触发器的时区信息
primary key (sched_name, trigger_name, trigger_group), -- 复合主键,确保触发器的唯一性
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name
, trigger_group) -- 外键关联到QRTZ_TRIGGERS
) engine=innodb comment = 'Cron类型的触发器表';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
表之间的关系:
QRTZ_CRON_TRIGGERS
表通过sched_name
,trigger_name
,trigger_group
字段与QRTZ_TRIGGERS
表关联,记录Cron
类型触发器的特定信息。
# 5. Blob类型的触发器表 (QRTZ_BLOB_TRIGGERS
)
表作用:
QRTZ_BLOB_TRIGGERS
表用于存储 Trigger
作为 Blob
类型的数据信息,这通常用于自定义的触发器类型。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_BLOB_TRIGGERS;
-- 创建Blob类型的触发器表
create table QRTZ_BLOB_TRIGGERS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', -- 触发器名称
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', -- 触发器组名
blob_data blob null comment '存放持久化Trigger对象', -- 持久化的触发器对象
primary key (sched_name, trigger_name, trigger_group), -- 复合主键,确保触发器的唯一性
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) -- 外键关联到QRTZ_TRIGGERS
) engine=innodb comment = 'Blob类型的触发器表';
2
3
4
5
6
7
8
9
10
11
12
表之间的关系:
QRTZ_BLOB_TRIGGERS
表通过sched_name
,trigger_name
,trigger_group
字段与QRTZ_TRIGGERS
表关联,存储自定义触发器的Blob
类型数据。
# 6. 日历信息表 (QRTZ_CALENDARS
)
表作用:
QRTZ_CALENDARS
表用于存储 Quartz 日历信息,Quartz 允许用户定义日历来指定哪些时间段内不触发任务。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_CALENDARS;
-- 创建日历信息表
create table QRTZ_CALENDARS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
calendar_name varchar(200) not null comment '日历名称', -- 日历名称
calendar blob not null comment '存放持久化calendar对象', -- 持久化的日历对象
primary key (sched_name, calendar_name) -- 复合主键,确保日历的唯一性
) engine=innodb comment = '日历信息表';
2
3
4
5
6
7
8
9
10
表之间的关系:
QRTZ_CALENDARS
表独立存储日历信息,供调度器及其触发器在运行时进行时间计算时使用。
# 7. 暂停的触发器表 (QRTZ_PAUSED_TRIGGER_GRPS
)
表作用:
QRTZ_PAUSED_TRIGGER_GRPS
表用于存储已暂停的触发器组的信息。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_PAUSED_TRIGGER_GRPS;
-- 创建暂停的触发器表
create table QRTZ_PAUSED_TRIGGER_GRPS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', -- 触发器组名
primary key (sched_name, trigger_group) -- 复合主键,确保触发器组的唯一性
) engine=innodb comment = '暂停的触发器表';
2
3
4
5
6
7
8
9
表之间的关系:
QRTZ_PAUSED_TRIGGER_GRPS
表独立存储暂停的触发器组信息,以便调度器能够在重新启动时知道哪些触发器需要保持暂停状态。
# 8. 已触发的触发器表 (QRTZ_FIRED_TRIGGERS
)
表作用:
QRTZ_FIRED_TRIGGERS
表存储与已触发的 Trigger
相关的状态信息,以及关联 Job
的执行信息。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_FIRED_TRIGGERS;
-- 创建已触发的触发器表
create table QRTZ_FIRED_TRIGGERS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
entry_id varchar(95) not null comment '调度器实例id', -- 触发器的实例ID
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', -- 触发器名称
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', -- 触发器组名
instance_name varchar(200) not null comment '调度器实例名', -- 调度器实例名称
fired_time bigint(13) not null comment '触发的时间', -- 触发器触发的时间
sched_time bigint(13) not null comment '定时器制定的时间', -- 定时器规定的时间
priority integer not null comment '优先级', -- 触发器的优先级
state varchar(16) not null comment '状态', -- 触发器的状态
job_name varchar(200) null comment '任务名称', -- 任务名称(可为空)
job_group varchar(200) null comment '任务组名', -- 任务组名(可为空)
is_nonconcurrent varchar(1) null comment '是否并发', -- 是否并发
requests_recovery varchar(1) null comment '是否接受恢复执行', -- 是否接受恢复执行
primary key (sched_name, entry_id) -- 复合主键,确保触发器的唯一性
) engine=innodb comment = '已触发的触发器表';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
表之间的关系:
QRTZ_FIRED_TRIGGERS
表记录触发器的运行历史,提供恢复和并发处理的信息。
# 9. 调度器状态表 (QRTZ_SCHEDULER_STATE
)
表作用:
QRTZ_SCHEDULER_STATE
表存储少量有关 Scheduler
的状态信息。如果用于集群中,可以看到其他 Scheduler
实例的状态。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_SCHEDULER_STATE;
-- 创建调度器状态表
create table QRTZ_SCHEDULER_STATE (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
instance_name varchar(200) not null comment '实例名称', -- 调度器实例名称
last_checkin_time bigint(13) not null comment '上次检查时间', -- 上次检查时间
checkin_interval bigint(13) not null comment '检查间隔时间', -- 检查的间隔时间
primary key (sched_name, instance_name) -- 复合主键,确保实例的唯一性
) engine=innodb comment = '调度器状态表';
2
3
4
5
6
7
8
9
10
11
表之间的关系:
QRTZ_SCHEDULER_STATE
表用于记录调度器的运行状态,尤其在集群环境中,确保各个调度器实例的同步和协调。
# 10. 悲观锁信息表 (QRTZ_LOCKS
)
表作用:
QRTZ_LOCKS
表存储程序的悲观锁信息,主要用于同步机制,防止多个调度器实例同时访问相同的资源。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_LOCKS;
-- 创建悲观锁信息表
create table QRTZ_LOCKS (
sched_name varchar
(120) not null comment '调度名称', -- Quartz Scheduler的名称
lock_name varchar(40) not null comment '悲观锁名称', -- 悲观锁的名称
primary key (sched_name, lock_name) -- 复合主键,确保锁的唯一性
) engine=innodb comment = '存储的悲观锁信息表';
2
3
4
5
6
7
8
9
10
11
表之间的关系:
QRTZ_LOCKS
表独立存在,主要用于调度器的同步锁机制,避免资源竞争冲突。
# 11. 同步机制的行锁表 (QRTZ_SIMPROP_TRIGGERS
)
表作用:
QRTZ_SIMPROP_TRIGGERS
表用于存储 Quartz 集群实现同步机制时的行锁信息。
表结构和 SQL 语句:
-- 如果表已存在则删除,确保创建的是最新表
drop table if exists QRTZ_SIMPROP_TRIGGERS;
-- 创建同步机制的行锁表
create table QRTZ_SIMPROP_TRIGGERS (
sched_name varchar(120) not null comment '调度名称', -- Quartz Scheduler的名称
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', -- 触发器名称
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', -- 触发器组名
str_prop_1 varchar(512) null comment 'String类型的trigger的第一个参数', -- String参数1
str_prop_2 varchar(512) null comment 'String类型的trigger的第二个参数', -- String参数2
str_prop_3 varchar(512) null comment 'String类型的trigger的第三个参数', -- String参数3
int_prop_1 int null comment 'int类型的trigger的第一个参数', -- Int参数1
int_prop_2 int null comment 'int类型的trigger的第二个参数', -- Int参数2
long_prop_1 bigint null comment 'long类型的trigger的第一个参数', -- Long参数1
long_prop_2 bigint null comment 'long类型的trigger的第二个参数', -- Long参数2
dec_prop_1 numeric(13,4) null comment 'decimal类型的trigger的第一个参数',-- Decimal参数1
dec_prop_2 numeric(13,4) null comment 'decimal类型的trigger的第二个参数',-- Decimal参数2
bool_prop_1 varchar(1) null comment 'Boolean类型的trigger的第一个参数',-- Boolean参数1
bool_prop_2 varchar(1) null comment 'Boolean类型的trigger的第二个参数',-- Boolean参数2
primary key (sched_name, trigger_name, trigger_group), -- 复合主键,确保触发器的唯一性
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) -- 外键关联到QRTZ_TRIGGERS
) engine=innodb comment = '同步机制的行锁表';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
表之间的关系:
QRTZ_SIMPROP_TRIGGERS
表通过sched_name
,trigger_name
,trigger_group
字段与QRTZ_TRIGGERS
表关联,存储集群同步机制中使用的行锁信息。