【数据库批量插入】

针对高QPS的日志上报需求,通过设备端批量上传和数据库批量操作的方式进行优化。使用IF函数实现增量更新,有效降低了QPS,减少了消息量,提升了数据库性能。
摘要由CSDN通过智能技术生成

数据库批量插入

在工作中碰到了一个需求,在设备操作后,需要将操作日志上报,但是操作过程比较长,需要多次上报,原上报QPS比较高,QPS > 3000,多次上报后,QPS是原来4倍,当前存在下面问题
1、如果解决QPS高的问题
2、原流程接受客户端请求后,通过发送消息异步处理,消息量比较高
3、数据库频繁操作,高峰期风险比较大

优化方案

针对这个需求,发现逻辑非常简单,就是原来在数据库是一条记录数据,把一次插入改成一次插入和3次更新,看到这个第一想法就是批量操作
1.设备端将上报日志批量上传,一次400条(设备端自己有本地数据库),能有效将QPS降低1和2的问题;
2. 数据库操作的时候,使用批量操作

批量添加或者累加更新

 <insert id="batchInsertOrUpdate" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
        <foreach collection="list" item="item" separator=";">
            insert into xn_test
            <trim prefix="(" suffix=")" suffixOverrides=",">
                gmt_create,gmt_modified,
                <if test="item.id != null and item.id !=''">
                    id,
                </if>
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值