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

使用nest+typeorm框架写数据库导致mysql的binlog暴增记录

两天用nest+typeorm写了一个商城,上线后mysql日志binlog两天就达到了10几个G,排查结果如下:

有个功能是定时遍历所有未签收的订单,看看是否到了自动签收时间,如果到了,就把订单状态设置成已签收。

代码是这样的

//查找未签收的订单
const orderList = await this.orderRepo.find({where:{state:0)}})for(let order of orderList){
//是否10天前的订单if(order.payTime<dayjs().addDays(-10,'days').unix()){//设置为自动签收order.state=2//签收状态order.signTime = dayjs().unix()await this.orderRepo.save(order)//保存订单
}else{//order.state=0 //保持未签收的状态await this.orderRepo.save(order)//保存订单
}
}

随着订单越来越多,导致每次执行 repo.save方法的时候,mysql都会将update的所有字段重新保存一次,导致binlog日志非常大,把阿里云默认的40G云盘两天就满了。

因为typeorm的save方法,会把每个字段都update更新一遍,这个方法最好在新增的时候使用,如果只是单纯更新某个字段,最好使用  update方法

await this.orderRepo.update(order.id,{state:order.state})//保存订单

 这样只会在binlog日志增加一行数据 update  order set state=1 where id = xxx

http://www.lryc.cn/news/449503.html

相关文章:

  • 组合逻辑元件与时序逻辑元件
  • 天龙八部怀旧单机微改人面桃花+安装教程+GM工具+虚拟机一键端
  • docker管理
  • electron教程(三)窗口设置
  • 图像增强论文精读笔记-Deep Retinex Decomposition for Low-Light Enhancement(Retinex-Net)
  • 2024年配置YOLOX运行环境+windows+pycharm24.0.1+GPU
  • vue-i18n在使用$t时提示类型错误
  • 大厂面试真题-什么是CAS单点登录?什么原理
  • 用Java提取PDF表格到文本、CSV、Excel工作表
  • OpenCV视频I/O(10)视频采集类VideoCapture之从视频流中检索一帧图像函数 retrieve()的使用
  • 【RocketMQ】SpringBoot整合RocketMQ
  • mysql replace无法替换空格?如何解决
  • Redis篇(环境搭建)
  • 【C++题目】7.双指针_和为 s 的两个数字
  • 网络通信1-传输层
  • 【JAVA源码授权】
  • tauri开发软件中,使用tauri自带的api用浏览器打开指定的url链接
  • OpenCV-图像拼接
  • C++【类和对象】(取地址运算符重载与实现Date类)
  • oracle 数据库中的异常和游标管理
  • 关于python 日志设定为INFO 但是DEBUG仍旧写入的问题
  • TypeScript 语法基础 第一部分 类型
  • GO Serial 学习与使用
  • 安卓app开发系列之-常用工具与库
  • 视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?
  • uniapp视频禁止用户推拽进度条并保留进度条显示的解决方法——方案二
  • mysql复合查询 -- 多表查询(介绍,笛卡尔积,使用),自连接(介绍,使用)
  • 【个人笔记】数据一致性的解决方案
  • 【WPF】多屏幕展示
  • vue admin 若依框架 解决无权限时进入死循环的问题 auths