select * from test.QRTZ_TRIGGERS 触发器表

select * from QRTZ_PAUSED_TRIGGER_GRPS 暂停的分组任务表

select * from QRTZ_LOCKS 锁表

select * from QRTZ_JOB_DETAILS 任务表详情((调度名字和分组和job名字唯一决定一个job))

select * from QRTZ_FIRED_TRIGGERS  任务执行详情

[1]插入一个任务

1、先从LOCKS中获取行级锁,锁标识(TRIGGER_ACCESS)

2、查看是否存在JOB_DETAILS,不存在保存

3、查看是否存在TRIGGERS

->判断当前分组是否暂停PAUSED_TRIGGER_GRPS,或所有分组是否暂停。如暂停,TRIGGERS为PAUSED

->如果当前定时任务,不允许执行,则去FIRED_TRIGGERS里查询其状态。其状态,为TRIGGERS的状态。(当前TRIGGERS状态不为WAITING和PAUSED,则返回当天状态,如果)

4、保存TRIGGERS(保存的时候,其状态很重要,依赖PAUSED_TRIGGER_GRPS,FIRED_TRIGGERS里的数据)

5、commit或roball

[2]一次触发任务调度的计划

1、先从LOCKS中获取行级锁,锁标识(TRIGGER_ACCESS)

2、访问TRIGGERS,找出最近要执行的,且状态为WAITING的触发器列表。List(triggerName和triggerGroup),再遍历逐个访问TRIGGERS和JOB_DETAILS表

  ->修改TRIGGERS表记录的状态由WATING-ACQUIRED

->在FIRED_TRIGGERS表中插入新记录,状态为ACQUIRED

3、如果出现异常,根据FIRED_TRIGGERS表中的instanceName查询出,所有的FIRED_TRIGGERS记录,验证刚才获取的TRIGGERS列表中是否包含相同instanceName

4、释放行级锁,锁标识(TRIGGER_ACCESS)

5、如果达到要执行任务的时间,在此获取TRIGGER_ACCESS

6,根据要激活List<Triggers>,验证每一条TRIGGERS的状态是否为ACQUIRED(如果存在获取当前状态,如果不存在状态为:DELETED)

->如果是,则继续验证JOB_DETAILS

->如果不是,返回null

7、验证job,是否存在

8、修改FIRED_TRIGGERS的状态:ACQUIRED->EXECUTING

--->如果修改验证过程中有异常,则将TRIGGERS的状态从ACQUIRED-->WATIING,并根据instanceName删除FIRED_TRIGGERS里的记录。

9、将TRIGGERS表的状态:ACQUIRED->WATIING

10、释放锁

11、创建内存的JobRunShell,交给工作线程运行。


//等待
String STATE_WAITING = "WAITING"; //获取
String STATE_ACQUIRED = "ACQUIRED"; //执行
String STATE_EXECUTING = "EXECUTING"; //完成
String STATE_COMPLETE = "COMPLETE"; //阻塞
String STATE_BLOCKED = "BLOCKED"; //错误
String STATE_ERROR = "ERROR"; //暂停
String STATE_PAUSED = "PAUSED"; //暂停阻塞
String STATE_PAUSED_BLOCKED = "PAUSED_BLOCKED"; //删除
String STATE_DELETED = "DELETED"; //错过
String STATE_MISFIRED = "MISFIRED";

【Quartz】Quartz的数据库表的更多相关文章

  1. quartz 持久化 数据库表

    此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...

  2. quartz定时任务(数据库需要的表)

    Quartz将Job保存在数据库中所需表的说明 QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron T ...

  3. Quartz所使用的表的说明

    Quartz将Job保存在数据库中所需表的说明 QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron T ...

  4. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  5. 数据库表结构设计方法及原则(li)

    数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满 ...

  6. 对于多个数据库表对应一个Model问题的思考

    最近做项目遇到一个场景,就是客户要求为其下属的每一个分支机构建一个表存储相关数据,而这些表的结构都是一样的,只是分属于不同的机构.这个问题抽象一下就是多个数据库表对应一个Model(或者叫实体类).有 ...

  7. C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享

    using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls"))   ...

  8. mysql数据库表的自增主键号不规律,重新排列

    mysql数据库表的自增主键ID乱了,需要重新排序. 原理:删除原有的自增ID,重新建立新的自增ID. 1.删除原有主键: ALTER TABLE `table_name` DROP `id`; 2. ...

  9. 数据库(SQL Server)管理数据库表~新奇之处

    说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一 ...

  10. hibernate笔记--通过SchemaExport生成数据库表

    方法比较简单,项目中只需要两个java类(一个实体类,如User,一个工具类),两个配置文件(hibernate必须的两个配置文件hibernate.cfg.xml,与User.hbm.xml),即可 ...

随机推荐

  1. Redis之哈希类型命令

    Hash(哈希) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿 ...

  2. 雷林鹏分享:Ruby 安装 - Unix

    Ruby 安装 - Unix 下面列出了在 Unix 机器上安装 Ruby 的步骤. 注意:在安装之前,请确保您有 root 权限. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 Ruby ...

  3. linux之CentOS7在线安装Mysql

    下载和添加仓库     1.wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm     2.sudo rpm -iv ...

  4. 20170523xlVBA多条件分类求和一例

    Public Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = Fals ...

  5. The Monster CodeForces - 917A (括号匹配)

    链接 大意:给定字符串, 只含'(',')','?', 其中'?'可以替换为'('或')', 求有多少个子串可以的括号可以匹配 (不同子串之间独立) 记$s_($为'('个数, $s_)$为')'个数 ...

  6. SecureCRT 7.2.0 Mac版密码无法保存的解决办法

    参考:http://jingyan.baidu.com/article/915fc414fda5fb51394b20bd.html 我之前在网上找的解决办法都是SecureCRT 7.2.0 Mac ...

  7. How to create VO s and VLs dynamically in OAF

    I have to create 2 VO objects dynamicaly and created 2 VL's dynamically .I have a static HGrid.and i ...

  8. oracle传入一个可能为空的参数进行查询

    在我们数据库的表中的某些字段可能为空,且传入的查询参数也可能为空. 例如 ,,); 其查询结果集如下 MAPPING_ID PARTY_ID VENDOR_ID SUPPLIER_REG_ID 332 ...

  9. 41. First Missing Positive *HARD*

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0]  ...

  10. LD_PRELOAD的偷梁换柱之能

    作者: net66 原创 本文网址:http://www.cnblogs.com/net66/p/5609026.html 发布日期:2015 年 06月 22日 一.LD_PRELOAD是什么 LD ...