一次性批量插入数据库时,导致CPU使用率突然很高,无法成功执行插入

YOLOv8【第一章:基础入门篇·第2节】一文搞定,数据集制作与标注完全指南! 🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀! 阅读详情

1 问题描述

原文:http://www.jianshu.com/p/30ca7189c43f

当一次性生成大量优惠券时,发现后台cpu使用率突然很高,无法成功生成券。

2 排查过程

  1. 发现DAO层的Mapper.xml配置文件中,插入的SQL配置如下:【不正常】

    <insert id="batchInsert" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List">
      <foreach collection="list" item="model"  separator=",">
         insert into promotion_coupon_user (id,template_id, coupon_id...)
         values
            (#{model.id},#{model.templateId}, #{model.couponId}...
      </foreach>
    </insert>
  2. 上层应用程序插入优惠券一次性插入50W+条数据,没有做数据插入切分;【不正常】

3 解决问题

  1. 修改DAO层的Mapper.xml配置文件中,插入的SQL:

    <insert id="batchInsert" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List">
      insert into promotion_coupon_user (id,template_id, coupon_id...)
      values
      <foreach collection="list" item="model"  separator=",">
          (#{model.id},#{model.templateId}, #{model.couponId}...
      </foreach>
    </insert>
  2. 修改上层应用,数据量大时,一定要进行数据切割插入;

4 问题总结

  1. 为了提升效率,数据能一次提交不做多次提交;
  2. 能一次插入解析sql不要多次提交解析sql;
  3. 插入数据量太大时,需要程序预先切割数据;


作者:陶邦仁
链接:http://www.jianshu.com/p/30ca7189c43f
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【PHP面试题29】什么是PHP-FPM?它与PHP和Nginx有什么关系 PHP面试专区。计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。PHP-FPM(FastCGI Process Manager)是PHP的FastCGI进程管理器,它是PHP 5.3.3及更高版本的一部分。它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能,并且可以与Web服务器(如Nginx、Apache等)进行通信。PHP-FPM是PHP的FastCGI进程管理器,它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能。 阅读详情

相关推荐

招行收款通SM2加密解密全流程解析:PHP开发者必看

本文详细解析了招商银行收款通服务中SM2加密解密的完整流程,特别针对PHP开发者提供了从密钥管理到签名验签的实战指南。涵盖国密算法基础、PHP环境配置、密钥安全存储及生产环境优化方案,帮助开发者快速实现高安全性的支付系统集成。

weixin_30632089的博客 651

MyBatis批量插入几千条数据慎用foreach

近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。mapper configuration是用foreach循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo代码) <insert id="batchInsert" parameterType="java.util.List"> insert into USER (id, name) values <foreach collect...

lisheng19870305的专栏 2170

【嵌入式底层知识修炼】按键和LED共用IO口的分时复用扫描方法

文章目录01 - PCB原理图例程02 - 分时复用的注意项和设计2.1 - 注意项2.2 - 设计03 - 代码实现 只要我跑的速度够快,寂寞就追不上我 只要Key和Led切换速度够快,人眼就看不出来 ————小白   如果你存在按键Key和显示Led共用同一个IO时,需要分时复用的需求,则可以移植代码进行使用: 代码所占code少于0.5K 线程安全,中断安全 可移植性高,配置容易 注意:系统需要存在一个至少为1ms的时钟中断 01 - PCB原理图例程   举2个Key和Led共用IO口的

单眼皮根号三的博客 1万+

mysql cpu过高_MySQL CPU占用过高怎么办

展开全部CPU占用e5a48de588b662616964757a686964616f31333433643761过高诊断思路mpstat -P ALL 1,查看cpu使用情况,主要消耗在sys即os系统调用上perf top,cpu主要消耗在_spin_lock生成perf report查看详细情况CPU主要消耗在mutex争用上,说明有锁热点。采用pt-pmp跟踪mysqld执行情况,热点主要...

weixin_30284125的博客 761

多传感器标定全栈系统学习教程

无论是激光雷达(Lidar)、毫米波雷达(Radar)、相机(Camera)还是惯导(IMU),传感器之间的精确标定直接决定了系统的可靠性与性能。本文将以系统化的视角,梳理多传感器标定的核心知识体系,并分享一套覆盖全栈技术的学习路径。Calibration)是实现点云与图像融合的前提,而雷达与车辆的标定(Radar2Car)则是精准速度估计的关键。:Lidar2Car、Camera2Car的快速标定流程,标定板布置规范。:从单传感器标定入手(如相机内参),逐步过渡到多传感器联合标定。

weixin_41792788的博客 904

高通Camera HAL3调试实战:如何用camxoverridesettings.txt高效抓取日志与dump图像数据

本文深入探讨了高通Camera HAL3调试中camxoverridesettings.txt文件的高效应用,重点介绍了如何通过该文件精准控制日志输出级别与dump图像数据,帮助开发者快速定位移动影像系统中的问题。文章详细解析了日志分级配置、图像数据捕获技巧及典型问题排查流程,为高通Camera HAL3项目开发提供了实用技术点。

weixin_30315905的博客 861

mysql index sub part_分析MySQL中索引引引发的CPU负载飙升的问题

收到一个mysql服务器负载告警,上去一看,load average都飙到280多了,用top一看,CPU跑到了336%,不过IO和内存的负载并不高,根据经验,应该又是一起索引引起的惨案了。看下processlist以及slow query情况,发现有一个SQL经常出现,执行计划中的扫描记录数看着还可以,单次执行耗时为0.07s,还不算太大。乍一看,可能不是它引发的,但出现频率实在太高,而且执行计...

weixin_32374723的博客 311

【Unity 实用工具篇】✨| 受击插件Feel 详细教程,开发游戏时更好的操控 游戏打击感

在一个游戏中,游戏手感对于游戏的整体游玩体验是非常重要的,而游戏手感中有一个很重要的点:打击感 那本篇文章就来讲一下打击感中的受击反馈部分。 在游戏中经常会用到攻击敌人,敌人扣血,执行某些受击功能的执行,尤其是对于有战斗场景的游戏来说,这就是标准的受击反馈。 所以引出本篇文章的主角:受击插件 Feel 的使用,2D和3D游戏都可以使用。

努力前行,总会成为自己心中的那道光 3万+

Mysql数据库高CPU问题定位和优化

本课程的主旨及目标 •导致mysql数据库CPU高的常见原因 •常见定位问题的方法 •一般定位步骤 •数据库注意事项 导致mysql数据库CPU高的常见原因 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,showprocesslist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引; 2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是Grou.

yw804909465的博客 9703

【经验&技巧】IBIS AMI模型眼图仿真问题探讨

在ADS的仿真环境中,不论发送和接收的AMI模型是否为true或者false,都可以将通道仿真设置为统计模式,但是,如果有一方的Init函数为false,在统计模式下,处于false状态的模型将不能执行其自带的后处理功能,如下图所示,左边的统计模式和右边的逐比特模式眼图存在明显的差异,原因在于,接收端的init函数为false导致在统计模式中不能对眼图进行DFE处理,换言之,此时统计模式下的眼图就是未经任何处理的“生图”。

一只豌豆象的博客 1767

GPFS扩展技术原理(十一)-FMDN广播与EID加解密

GFPS扩展技术原理(十一)FMDN广播及EID加解密

十多年蓝牙协议软件开发,擅长蓝牙协议分析 935

mybatis批量插入数据导致系统OOM,微服务内存爆了

今天我们来说说工作中遇到的一个真实案例,由于使用mybatis的批量插入功能,导致系统内存溢出OOM(Out Of Memory), "java.lang.OutOfMemoryError: Java heap space"的报错,导致服务出现短暂的服务不可用,大概一两分钟不可用。1) 上面写的阈值1000 ,需要根据自己的业务场景来设置,比如你插入对象简单,对象属性不读,也不复杂,单个对象的大小也不超过1kb,那你这里的阈值可以设置大些,比如2000, 甚至 可以是 10000;

xzb5566的专栏 4522

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

排查MongoDB CPU使用率高的问题

MongoDB CPU使用率很高或者CPU使用率接近100%的问题,从而导致数据读写处理异常缓慢。 打开Mongo Shell 执行db.currentOp()命令,查看数据库当前正在执行的操作。 需要关注以下几个字段

unsynchronized的博客 2307

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

快速插入sqlite数据库的几种方法比较

sqlite

weixin_44216359的博客 2676

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mongo查询结果 去掉 numberlong_Mongo | 排查MongoDB CPU使用率高的问题

在使用云数据库MongoDB的时候您可能会遇到MongoDB CPU使用率很高或者CPU使用率接近100%的问题,从而导致数据读写处理异常缓慢,影响正常业务。本文主要帮助您从应用的角度排查MongoDB CPU使用率高的问题。分析MongoDB数据库正在执行的请求通过Mongo Shell连接实例。详情请参见Mongo Shell连接单节点实例、Mongo Shell连接副本集实例、Mo...

weixin_30045597的博客 612

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MongoDB CPU利用率很高,怎么破(转)

经常有用户咨询:MongoDB CPU 利用率很高,都快跑满了,应该怎么办? 遇到这个问题,99.9999% 的可能性是「用户使用上不合理导致」,本文主要介绍从应用的角度如何排查 MongoDB CPU 利用率高的问题。 Step1: 分析数据库正在执行的请求 用户可以通过 Mongo Shell 连接,并执行 db.currentOp() 命令,能看到数据库当前正在执行的操作,...

weixin_30700977的博客 177

java应用cpu使用率过高问题排查

---------------------------------------linux下如何定位代码问题------------------------------- 1、先通过top命令找到消耗cpu很高的进程id假设是123 2、执行top -p 123单独监控该进程 3、在第2步的监控界面输入H,获取当前进程下的所有线程信息 4、找到消耗cpu特别高的线程编号,假设是123 5、...

小轱辘 5万+

接口压测时MySql对CPU占用过高

接口压测时MySql对CPU占用过高

weixin_52116015的博客 2781

mysql cpu_mysql数据库cpu过高 | 每天进步一点点

今日遇到一个问题,mysql数据库cpu过高。怀疑是某条sql语句出现死循环,或效率太低造成的。通过之行sql命令:show processlist;发现几个问题:(1)每次之行该sql语句,发现id增加的非常快(2)有很多查询记录(commnd为query)的state 是Sending data 即正在执行或发送,而且这些记录的time很高。 info列显示出了,对应的sql语句。通过分析发...

weixin_28904519的博客 243

jdbc批量插入数据库

jdbc批量插入数据库 翻译:陈先波(turbochen@163.com)阅读原文:http://www.theserverside.com/articles/article.tss?l=JDBCPerformance_PartIII一、使用Statement而不是PreparedStatement对象JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是...

yuanligang12的专栏 207

AWR报告解读

分析下这份AWR报告,主要从CPU、IO、内存、语句类型来分析。

喝醉酒的小白 1万+

greenplum 大表频繁查询,插入,导致IO,CPU过高

错误What are " VM protect failed to allocate %8024 bytes from system, VM Protect 2012 MB 参考 https://discuss.pivotal.io/hc/en-us/articles/204997207 1 添加SWAPValidate the value of gp_vmem_protect_limit. gp...

changyuan101的博客 6133
上一篇: 深入Java机制(一)--反射机制和动态代理机制
下一篇: WEB后台--邮件和短信业务实现(包括Java一键实现、封装和异步)以及原理详解
L_小乌鸦
博客等级 码龄11年 75粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值