优雅实现・高并发下大量数据乐观锁批量更新(MySQL 最优实践)

面对高并发扣减 / 更新大批量数据防超发 / 防覆盖 核心诉求,基于 MySQL + MyBatis 实现高性能 + 原子性 + 版本号严格控制的乐观锁批量更新,拒绝单行循环、杜绝并发冲突。

xml

复制代码
<update id="batchUpdateByVersion">
    UPDATE biz_table t
    INNER JOIN (
        <foreach collection="list" item="item" separator=" UNION ALL ">
            SELECT
                #{item.id} AS id,
                #{item.version} AS old_ver,
                #{item.num} AS target_num
        </foreach>
    ) v ON t.id = v.id AND t.version = v.old_ver
    SET 
        t.biz_num = v.target_num,
        t.version = t.version + 1
    WHERE t.deleted = 0 AND t.biz_id = #{bizId}
</update>

核心优势

  1. 性能优势 摒弃 for 循环单行 update,单 SQL 完成批量更新,大幅减少数据库交互、事务与网络损耗,千级条目毫秒执行。
  2. 乐观锁并发保障 关联条件绑定版本号相等,仅当前版本匹配才执行更新;更新成功自动version+1,并发争抢时后到请求因版本不匹配更新失败,杜绝超扣、数据覆盖。
  3. 原子性 MySQL 单 UPDATE 语句原子执行,要么全部命中更新、要么对应行跳过,无部分更新脏数据。

补充说明

  • 返回值:受影响行数 = 实际版本匹配成功的数据条数,业务可根据返回值判断部分失败、做重试处理;
  • 适用场景:库存扣减、装箱数量变更等大批量、高并发数据变更场景。
复制代码
相关推荐
峥无6 分钟前
SQL性能调优:从执行计划看懂索引的使用与失效
数据库·sql
xyj291759641117 分钟前
在Trae中配置数据库MCP
数据库·ai·mcp
廋到被风吹走18 分钟前
【AI】【Claude】从 Prompt 到 Agent 的完整进阶地图
数据库·人工智能·prompt
数智化管理手记20 分钟前
智能财务能替代人工核算吗?智能财务核心功能包含哪些?
大数据·网络·数据库·数据挖掘·精益工程
DB哥讲数据库22 分钟前
【最新】MySQL9.7安装教程:图文详解(附MySQL安装包)
android·mysql·adb
金智维科技官方33 分钟前
DeepSeek接入企业系统:流程自动化新玩法
大数据·数据库·人工智能
小小龙学IT40 分钟前
Tigris:下一代无服务器数据库
数据库·云原生·serverless
凤山老林1 小时前
ORM 框架性能调优:Spring Boot 下 N+1 查询根因治理、动态 SQL 优化与 Fetch 策略实战
数据库·spring boot·sql
laowangpython1 小时前
昆仑通态 Mcgs Pro软件安装步骤(附安装包)Mcgs Pro 3.3.6 下载安装教程(保姆级)
java·服务器·数据库·其他
是梦终空1 小时前
计算机毕业设计279—基于SpringBoot+Vue3校园商户意见反馈系统(源代码+数据库+17000字论文+ppt)
数据库·spring boot·vue·毕业设计·课程设计·毕业论文·源代码