You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# REST API:清理数据库中长时间运行操作的结果

长时运行任务结果清理的实用方案

一、结果清理的触发时机

  • 主动触发:用户调用你实现的清理端点时,直接删除对应操作ID的结果数据;另外可以在用户获取结果后,提供一键清理的选项,让用户自主决定是否立即删除。
  • 规则驱动:根据任务类型设定不同保留周期:
    • 临时查询、分析类任务,完成后保留24-48小时即可;
    • 涉及审计、合规的任务,按业务要求保留数月甚至更久;
    • 当数据库存储量接近预警阈值时,优先清理最旧的、已完成且无访问记录的结果。
  • 任务生命周期触发:任务失败/中断后,保留7天用于排查问题,之后自动清理。

二、用户关闭网页的处理

用户直接关闭网页时,前端无法主动通知后端清理,必须靠后端被动机制兜底:

  • 给任务记录表增加last_access_time字段,用户每次调用获取状态/结果接口时更新该字段;
  • 给每个任务设置默认过期时间(比如任务完成后48小时),写入expired_at字段,不管用户是否访问,到期后都进入清理队列。

三、是否需要定时后台服务?

必须实现定时后台服务,这是处理无人触发的过期数据的核心手段:

  • 定时任务(比如每小时执行一次)扫描数据表,筛选出expired_at早于当前时间的记录,分批次删除(避免大批量删除阻塞数据库);
  • 清理时加行级锁或使用事务,防止并发操作导致的数据不一致;
  • 可以搭配软删除(标记is_deleted字段),再定期清理软删除数据,降低误删风险。

内容的提问来源于stack exchange,提问作者Gregory Buiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:27:02