在线网站排名工具,服务行业网站建设,外贸网站和内贸,做网站为什么选择竞网智赢这
两天用nesttypeorm写了一个商城#xff0c;上线后mysql日志binlog两天就达到了10几个G#xff0c;排查结果如下#xff1a;
有个功能是定时遍历所有未签收的订单#xff0c;看看是否到了自动签收时间#xff0c;如果到了#xff0c;就把订单状态设置成已签收。
代码…
这
两天用nesttypeorm写了一个商城上线后mysql日志binlog两天就达到了10几个G排查结果如下
有个功能是定时遍历所有未签收的订单看看是否到了自动签收时间如果到了就把订单状态设置成已签收。
代码是这样的
//查找未签收的订单
const orderList await this.orderRepo.find({where:{state:0)}})for(let order of orderList){
//是否10天前的订单if(order.payTimedayjs().addDays(-10,days).unix()){//设置为自动签收order.state2//签收状态order.signTime dayjs().unix()await this.orderRepo.save(order)//保存订单
}else{//order.state0 //保持未签收的状态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 state1 where id xxx