本文详解 laravel 中使用模型工厂进行大规模数据填充时的内存泄漏成因与优化方案重点介绍分批处理、禁用查询日志、释放模型实例等实战技巧帮助开发者安全完成 100 万级数据种子操作。 本文详解 laravel 中使用模型工厂进行大规模数据填充时的内存泄漏成因与优化方案重点介绍分批处理、禁用查询日志、释放模型实例等实战技巧帮助开发者安全完成 100 万级数据种子操作。在 Laravel 中执行大规模数据填充如 seeding 100 万个关联记录时常见错误并非“代码写错了”而是忽略了 ORM 层与数据库交互的资源开销模式。你提供的代码看似逻辑清晰——每轮迭代创建 10 个 Term再为每个 Term 关联生成 10 个 Question——但实际触发了典型的 N1 查询放大 内存累积 双重问题每次 $terms-each(...) 中调用 saveMany() 会逐条执行 INSERT并触发 Eloquent 事件、属性转换、关系加载等开销Question::factory(10)-make([...]) 返回的是未持久化的模型集合但 saveMany() 仍需逐个实例化、验证、插入且所有已创建的 Term 和 Question 实例均保留在 PHP 内存中即使变量被复用Eloquent 对象引用未显式销毁更关键的是Laravel 默认开启查询日志DB::enableQueryLog()用于调试但在大批量操作中会将全部 SQL 记录在内存中成为首要内存杀手。? 正确做法分批 禁用日志 原生批量插入以下是一个生产就绪的优化方案以填充 1,000,000 条 Question 为例 JoinMC智能客服 JoinMC智能客服帮您熬夜加班7X24小时全天候智能回复用户消息自动维护媒体主页全平台渠道集成管理电商物流平台一键绑定让您出海轻松无忧