当前位置: 首页 > news >正文

TypeORM批量新增优化:解决跨境万级数据插入卡顿问题

Taocarts跨境系统在商品批量铺货、日志批量归档、订单数据同步场景中,经常需要一次性插入千级、万级数据。原生TypeORM单条循环插入的写法效率极低,万级数据插入耗时数十秒,极易导致接口超时、数据库连接占用过高。很多开发者习惯性使用 save() 循环插入,完全不适用于批量数据场景。本文将详解TypeORM高性能批量插入方案,对比普通插入与批量插入效率,提供可直接复用的封装代码,解决大数据量插入卡顿、超时问题。
首先对比两种插入方式的核心差异:循环save会开启多次数据库事务、多次网络IO、多次日志写入,万级数据插入效率极低;而 insertMany 批量插入仅单次IO、单次事务,数据库执行效率提升数十倍。同时我们针对Taocarts业务封装通用批量插入工具,支持容错跳过异常数据、分批插入,避免单次数据过大导致SQL超长报错。
通用高性能批量插入工具封装,支持自动分批、容错处理:

// src/common/utils/batch-insert.util.tsimport{Repository}from'typeorm';exportclassBatchInsertUtil{/** * 通用批量插入 * @param repo 数据实体仓库 * @param data 插入数据数组 * @param batchSize 分批大小 * @returns 插入结果 */staticasyncbatchInsert<T>(repo:Repository<T>,data:T[],batchSize:number=500){if(!data||data.length===0)return;// 数据分批切割constbatchList=[];for(leti=0;i<data.length;i+=batchSize){batchList.push(data.slice(i,i+batchSize));}// 逐批插入,容错处理,单批失败不影响整体for(constitemofbatchList){try{awaitrepo.insert(item);}catch(e){console.error('批量插入失败',e);continue;}}}}

跨境商品批量铺货业务落地示例,适配爬虫批量导入商品场景:

// src/modules/goods/goods.service.tsasyncbatchImportGoods(goodsList:any[]){// 数据格式化处理constformatList=goodsList.map(item=>{return{name:item.name,price:item.price,originPrice:item.originPrice,img:item.img,categoryId:item.categoryId,stock:item.stock,status:1,createTime:newDate()};});// 批量插入数据库,每批500条awaitBatchInsertUtil.batchInsert(this.goodsRepository,formatList,500);return{total:formatList.length};}

针对需要返回主键ID的特殊场景,优化批量插入逻辑,适配订单子项、明细数据插入:

// 带主键返回的批量插入asyncbatchInsertWithId<T>(repo:Repository<T>,data:T[]){constresult=awaitrepo.insert(data);returnresult.identifiers;}

实测数据显示,10000条商品数据,普通循环插入耗时28秒,批量分批插入仅需1.2秒,性能提升20倍以上。同时分批插入规避了MySQL单条SQL超长限制,容错机制避免了单条脏数据导致整批插入失败的问题。该优化完美适配Taocarts爬虫铺货、数据迁移、日志归档、批量订单生成等大数据量场景,彻底解决了批量数据操作超时、数据库压力过高的问题,是跨境系统大数据量处理的核心优化方案。

http://www.jsqmd.com/news/1004742/

相关文章:

  • 医用超声模拟系统:模拟超声信号算法
  • 2026山西老百姓优先选择的五家贵金属回收店 黄金回收白银回收铂金金条回收合规门店测评合集 - 信誉隆金银铂奢回收
  • 上海市2026年黄金回收白银回收铂金回收变卖,5 家靠谱贵金属门店实地测评汇总 - 奢金汇
  • 微信小程序虚拟支付2.0实战:用Java搞定余额查询,避开offer_id和sessionKey的坑
  • 2026苏州本地土壤检测高口碑机构 TOP 农田场地污染检测附地址电话全收录 - 科信检测
  • 保姆级教程:用Uni-App+微信小程序连接智能硬件(蓝牙BLE完整项目代码)
  • Android应用层串口通信封装库(含USB转串口调试可用源码)
  • STM32 ADC采集进阶:告别轮询,用中断和DMA实现多通道电压采集(基于CubeMX)
  • 商圈实测武汉江汉区:黄金回收现状与六家透明机构盘点 - 上门黄金回收
  • Navicat重置工具终极指南:Mac版Navicat无限试用技巧大揭秘
  • VMware Workstation Pro 17 许可证密钥实战配置指南
  • 上海市2026年市民高频选择的5家实体黄金回收白银回收铂金回收门店实地测评整理 - 奢金汇
  • 终极APA第7版格式解决方案:让Microsoft Word参考文献一键规范
  • 手把手教你用CH32V307的SPI驱动OLED屏(附完整代码与接线图)
  • 上饶市2026年黄金回收白银回收铂金回收变卖,5 家靠谱贵金属门店实地测评汇总 - 奢金汇
  • 2026年6月扬子扫地机厂家推荐指南:扬子扫地机物业专用,扬子手推式扫地机,扬子驾驶式扫地机,扬子工业扫地机公司优选! - 品牌鉴赏师
  • 副业产品如何选
  • BMS系统专栏:彻底搞懂!UART、RS232、RS485 三者区别
  • 2026年6月:四川靠谱的彩钢蓬/集装箱房/市政围挡公司如何选择?专业推荐龙之辉 - 品牌鉴赏官2026
  • 2026盘锦本地危房检测房屋安全鉴定哪家专业?TOP 正规机构榜单 + 联系方式 - 鉴安检测
  • 【SAE出版、提交EI检索】第三届城市建设与交通运输国际学术会议(UCT 2026)
  • 如何用HS2-HF_Patch一键汉化Honey Select 2:智能增强补丁实战指南
  • 告别纸上谈兵:用Vector CANoe实战演练AUTOSAR DCM模块的诊断服务流程
  • 学Simulink——基于相移控制的双向全桥 DC-DC 变换器回流功率优化仿真
  • 手把手教你学Simulink——纯电动汽车永磁同步电机(PMSM)矢量控制(FOC)仿真
  • 南阳整装装修本土标杆,南方木业铸就整装好口碑 - 百航
  • 梯度下降实战:学习率调优与参数更新的工程直觉
  • 2026资阳市民高频选择的 5 家实体水质检测饮用水检测井水检测第三方实地测评整理 - 诚金汇钻回收公司
  • 2026 芜湖柴油发电机组厂家 TOP5 权威推荐|芜湖柴油发电机哪家好?本地靠谱品牌对比 - ZJYDZH
  • 了解视频分类任务与数据集——从数据组织到时空建模的完整认知