gongxiangp2/docs/回收站清理性能修复-2026-10-09.md

1.8 KiB
Raw Blame History

回收站清理性能修复

用户提交的 18 条素材包含 1276 个文件,原版本从提交到全部完成用了约 6 分 33 秒。任务无错误,但每条素材都读取全库引用:399050 条资产与其他引用形成约 49.9 万个文件身份,单次检查约 19 秒;只有 4 个文件的任务也耗时 18.6 秒。

此次修改只涉及后台清理:按当前待处理文件的完整地址筛选资产引用,常规地址在数据库内做集合匹配,再使用原有路径、桶与存储边界规则核对。编码、控制字符、点路径等特殊格式,以及白底图本地派生引用仍纳入检查;每个任务重新查询,保护其他素材和回收站中的共用文件。

物理清理每批最多并行 8 个文件,逐文件保留结果并按批持久化。批内部分失败时先保存已成功的结果,再进入原有自动重试;租约和心跳规则保留。进程中断时最多重做一个批次,缺失文件删除仍幂等。页面、删除权限和存储写入范围没有调整,无新增数据库迁移。

验证:20 项相关 Jest 测试、类型检查、11 组真实 PostgreSQL/MinIO/文件系统集成检查通过,覆盖特殊文件名、编码历史域名、同名不同路径、白底派生共用文件、2000 个文件候选上限、部分失败续跑、过期租约接管及审计保留。跨三个批次处理 19 个真实本地文件,结果全部持久化,隔离环境耗时 91ms。

线上数据仅执行只读检查:同一 4 文件任务的引用检查由约 19 秒降至 4.9 秒,原 18 条任务均已由用户提交并完成;没有为验收新增生产删除。此数字是引用检查耗时,不能等同于整批物理删除耗时。精确发布提交、镜像、健康及只读对照证据保存在 tmp/material-purge-slow-qa/。