ASP.NET中使用Quartz:核心表有哪些?哪些表可安全删除?
ASP.NET中使用Quartz:核心表有哪些?哪些表可安全删除?
嘿,刚好我对Quartz在ASP.NET项目里的使用门儿清,结合你做菜单定时推送的场景,给你唠唠它的核心数据库表,还有哪些是能放心处理的:
一、Quartz的核心必用表
这些表是Quartz运行的基础,绝对不能删,删了任务调度直接歇菜:
qrtz_job_details:咱要执行的菜单推送任务的核心信息全存在这,比如任务对应的业务类、是否需要持久化、任务描述这些,相当于任务的“身份证”qrtz_triggers:所有触发器的基础信息表,不管是你说的“周二下班时间推菜单”这种Cron规则,还是“延迟3天执行”的简单定时,触发器的通用状态、关联的任务ID都存在这qrtz_cron_triggers:专门存Cron表达式的触发器细节,像“每周一7点重复推送”这种复杂定时规则,全靠它来记录Cron表达式,你的场景里这个表肯定得留着qrtz_simple_triggers:对应简单触发器的细节,比如一次性延迟执行、固定间隔重复的任务规则存在这,如果你有一次性的定时推送需求,这个表也得用qrtz_fired_triggers:记录已经触发或正在执行的任务实例,Quartz靠它跟踪任务的执行状态,避免重复触发,运行时会自动维护qrtz_scheduler_state:调度器的状态记录表,集群部署时用来保证只有一个调度器节点在调度任务,防止冲突qrtz_locks:分布式集群场景下的锁表,防止多个节点同时操作同一个任务,确保任务执行的唯一性
二、可“酌情处理”的表(不是直接删表,而是按需清理或考虑是否保留)
Quartz的表大部分都是运行必需的,但有几种情况可以灵活处理:
- 如果你确定永远只用简单触发器,完全不会用到Cron表达式,那
qrtz_cron_triggers理论上可以删,但真心不建议,万一后面要加重复定时的推送任务,还得重建表,留着也占不了多少空间 - 如果你是单服务器部署,完全没考虑过集群扩容,那
qrtz_scheduler_state和qrtz_locks可以删,但还是推荐留着,谁知道以后业务发展要不要加服务器呢? qrtz_fired_triggers里的历史执行记录,你可以定期清理旧数据(比如超过30天的记录),但绝对不能直接删表,不然Quartz运行时会找不到任务执行状态,直接报错
对了,你之前用内存存储任务的话,重启服务器任务就没了,换成数据库持久化后,这些表就能帮你把任务信息牢牢存在数据库里,就算服务器重启,任务也不会丢,刚好适合你做菜单定时推送的需求。
备注:内容来源于stack exchange,提问作者chickentaco
相关产品推荐
相关产品推荐

