# school_jobs 表文档 ## 表概述 **表名**: school_jobs **功能**: 队列任务管理表,负责管理教务系统中的异步任务队列,支持任务调度、重试机制和任务状态跟踪 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references queue varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references payload longtext utf8mb4_general_ci NO NULL select,insert,update,references attempts tinyint unsigned NULL NO 0 select,insert,update,references reserve_time int unsigned NULL YES 0 select,insert,update,references available_time int unsigned NULL YES 0 select,insert,update,references create_time int unsigned NULL YES 0 select,insert,update,references ``` ## 功能用途 ### 主要功能 1. **队列任务管理**: 管理系统中的异步任务队列 2. **任务负载存储**: 通过payload字段存储任务的具体数据和参数 3. **重试机制**: 通过attempts字段跟踪任务的执行次数 4. **任务调度**: 通过reserve_time和available_time控制任务的执行时机 5. **队列分类**: 通过queue字段对不同类型的任务进行分类管理 6. **任务状态跟踪**: 跟踪任务的执行状态和进度 7. **延迟执行**: 支持任务的延迟执行和定时调度 8. **失败重试**: 自动重试失败的任务,提高系统可靠性 9. **任务监控**: 监控任务队列的执行情况和性能 ### 业务场景 1. **邮件发送**: 异步处理邮件发送任务,避免阻塞主流程 2. **数据导出**: 处理大量数据的导出任务,如成绩单、报表等 3. **文件处理**: 处理文件上传、转换、压缩等耗时操作 4. **通知推送**: 批量发送系统通知、短信、微信消息等 5. **数据同步**: 与第三方系统进行数据同步和交换 6. **定时任务**: 执行定时的数据清理、备份、统计等任务 7. **图片处理**: 处理图片的缩放、裁剪、水印等操作 8. **报表生成**: 生成复杂的统计报表和分析数据 9. **系统维护**: 执行系统清理、优化、更新等维护任务 ## 关联关系 ### 主要关联表 1. **school_sys_user**: 系统用户表(任务创建者关联) 2. **school_campus**: 校区表(任务校区关联) 3. **school_sys_config**: 系统配置表(队列配置关联) 4. **school_addon**: 插件表(插件任务关联) 5. **sys_log**: 系统日志表(任务执行日志关联) 6. **school_sys_attachment**: 附件表(文件处理任务关联) 7. **school_order_table**: 订单表(支付任务关联) 8. **school_member**: 会员表(通知任务关联) ### 关联说明 1. **队列分类**: queue字段标识任务类型和处理队列 2. **任务数据**: payload字段存储任务的具体执行参数 3. **执行控制**: reserve_time和available_time控制任务执行时机 4. **重试机制**: attempts字段记录任务重试次数 5. **时间管理**: create_time记录任务创建时间 6. **状态跟踪**: 通过时间字段判断任务执行状态 7. **业务关联**: 任务可能关联到各种业务表的数据处理 8. **系统集成**: 与系统配置和日志系统集成 ## 索引建议 1. **主键索引**: id(已存在) 2. **业务索引**: - queue(队列类型查询) - attempts(重试次数查询) 3. **时间索引**: - reserve_time(预约时间查询) - available_time(可用时间查询) - create_time(创建时间查询) 4. **复合索引**: - (queue, available_time)(队列可用任务查询) - (queue, attempts)(队列重试任务查询) - (available_time, attempts)(可执行任务查询) 5. **状态索引**: - (reserve_time, available_time)(任务状态查询) ## 注意事项 1. **队列名称**: queue字段应使用标准的队列命名规范 2. **负载格式**: payload字段应存储有效的JSON或序列化数据 3. **重试限制**: attempts字段应设置合理的重试上限,避免无限重试 4. **时间精度**: 时间字段使用Unix时间戳,注意时区处理 5. **任务超时**: 长时间未处理的任务需要超时机制 6. **并发控制**: 同一任务避免重复执行,需要锁机制 7. **内存管理**: payload字段可能存储大量数据,注意内存使用 8. **错误处理**: 任务执行失败需要记录详细的错误信息 9. **队列监控**: 需要监控队列长度和处理速度 10. **数据清理**: 已完成的任务需要定期清理,避免表过大 11. **优先级管理**: 重要任务需要优先级机制 12. **死锁检测**: 避免任务间的死锁情况 13. **资源限制**: 控制并发任务数量,避免系统资源耗尽 14. **备份恢复**: 重要任务数据需要备份和恢复机制 15. **性能优化**: 大量任务处理时需要考虑性能优化 16. **安全控制**: 任务执行需要适当的权限和安全控制