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

MySQL存储过程如何处理大批量数据插入_分批处理优化方案

直接INSERT INTO...SELECT会锁表卡死,因其作为单事务执行导致undo/redo日志暴涨、buffer pool压力大;应改用按主键分批+显式COMMIT的小事务方案。为什么直接 INSERT INTO ... SELECT 会锁表卡死MySQL 存储过程中一次性插入几十万行,INSERT INTO t1 SELECT * FROM t2 看似简洁,实际在 InnoDB 下会持有全表写锁(或大量行锁),事务日志暴涨,主从延迟飙升,甚至触发 Lock wait timeout exceeded。根本原因是:这条语句被当作单个事务执行,undo log 和 redo log 压力集中,buffer pool 也容易被撑爆。不要依赖“语句短就快”,它不等于“事务小”即使加了 WHERE 条件,只要扫描范围大、没走好索引,照样慢且锁多autocommit=OFF 下更危险——整个存储过程就一个事务,失败就得全滚用 WHILE + LIMIT 分批插入的实操要点核心是把大任务切成小事务,每批控制在 1000–5000 行(视单行大小和服务器配置调整)。关键不是“循环”,而是“定位+限流+提交”。必须用自增主键或时间戳字段做游标,避免 OFFSET 越来越慢;例如每次取 WHERE id > last_id ORDER BY id LIMIT 5000每批后显式调用 COMMIT,不要等存储过程结束才提交在循环开头加 IF done THEN LEAVE read_loop; END IF; 防止无限循环批量大小别硬编码,建议作为 IN 参数传入,方便压测调优示例片段:DECLARE batch_size INT DEFAULT 2000;DECLARE last_id BIGINT DEFAULT 0;read_loop: WHILE 1 DO INSERT INTO target_table SELECT * FROM source_table WHERE id > last_id ORDER BY id LIMIT batch_size; IF ROW_COUNT() = 0 THEN LEAVE read_loop; END IF; SELECT MAX(id) INTO last_id FROM target_table WHERE id > last_id; COMMIT;END WHILE;用游标逐行处理反而更慢?什么情况下该用,什么该禁用游标(DECLARE cur CURSOR FOR ...)本质是单行 fetch + 单行 INSERT,I/O 和事务开销翻倍,在批量场景下纯属自缚手脚。 Shakespeare 一款人工智能文案软件,能够创建几乎任何类型的文案。

http://www.jsqmd.com/news/618280/

相关文章:

  • 罗技鼠标宏压枪脚本终极指南:从架构解析到实战优化
  • 如何选购博康温泉设计服务,武汉地区品牌口碑好吗 - myqiye
  • 忍者像素绘卷微信小程序开发:用户生成图隐私设置与权限管理体系
  • 超越基础教程:用Unity的OnTriggerStay和OnCollisionStay打造高级游戏机制(附性能优化技巧)
  • Cesium 1.79源码级适配CGCS2000坐标系(4490)实战指南
  • 如何永久保存你的数字记忆:WeChatMsg聊天记录导出与年度报告生成终极指南
  • 讲讲博康泳池设计的劣势是什么,影响它的使用效果吗 - 工业品牌热点
  • 游戏数字尘埃的魔法扫除师:SteamCleaner的三重空间净化术
  • 2026 论文排版工具推荐|从手动调格式到智能排版,总有一款适合你
  • 智能音频分割:从静音检测到自动化处理的技术实践
  • 2026年港口设备耐磨链条公司排名,靠谱品牌大揭秘 - 工业品网
  • OpenClaw浏览器自动化:Qwen3-14b_int4_awq驱动的研究数据采集
  • IINA:macOS原生级视频播放体验的现代化解决方案
  • 深入Navicat的AES加密机制:手写Python代码还原其密钥生成与加解密流程
  • HunyuanVideo-Foley 生成音频的频谱分析与可视化效果对比
  • 终极GPU监控神器nvitop:让NVIDIA显卡管理变得简单高效 [特殊字符]
  • Wonder3D:2-3分钟从单张图片生成高质量3D模型的完整指南
  • 探讨山东地区温度传感器厂家,哪家费用合理 - 工业推荐榜
  • 【杂谈】-人工智能盗窃与冒用肆虐当下,原创内容保护的破局之策
  • 革命性智能自动化引擎:Midscene.js如何重塑下一代UI交互范式
  • RAG 还是 Lucene:私有化部署客服系统的 AI 知识库架构选型窗
  • 2026年论文AIGC率太高怎么降?收藏言笔去AI痕迹高效指南 - 降AI实验室
  • 解决iOS下小程序createInnerAudioContext无声问题的3种实用方案
  • LangChain `return_direct` 功能实战指南:如何优化工具链调用流程
  • 进口vs国产超低温冰箱:在精度与稳定性上的真实差距 - 品牌推荐大师1
  • 告别if-else地狱!在Godot 4.4里用状态机重构你的2D角色控制器
  • 龙虾白嫖指南,请查收~霸
  • CRMEB多商户系统部署指南:从源码上传到PHP扩展配置
  • Spring Cloud进阶--分布式权限校验OAuth控
  • FIFA 23 Live Editor 终极指南:如何安全使用游戏实时编辑工具