MySQL大数据量写入时如何提速_利用批量插入与禁用索引策略
多值INSERT比单条快约10–20倍;批量插入核心收益是减少往返次数和事务开销,10万行单条需8–12秒,批量(每批1000行)仅需0.6–1.2秒。INSERT INTO ... VALUES 多值插入比单条快多少批量插入的核心收益来自减少客户端与服务端的往返次数和事务开销。单条 INSERT 每次都要走解析、优化、写 binlog、刷 redo log 全流程;而一次插入 1000 行,这些开销基本只算一次。实测在千兆内网、SSD 存储、无主从延迟压力下:插入 10 万行,单条耗时约 8–12 秒;用 INSERT INTO t(a,b) VALUES (1,2),(3,4),...,(999,1000) 批量(每批 1000 行),总耗时通常压到 0.6–1.2 秒。每批行数建议控制在 1000–5000 之间:太小起不到批处理效果,太大可能触发 max_allowed_packet 截断或锁表时间过长必须显式开启事务包裹多批:否则每批仍会自动提交,失去批量优势避免在循环里拼接超长 SQL 字符串——容易内存溢出或触发 max_allowed_packet 错误DISABLE KEYS 和 DROP INDEX 在 MyISAM / InnoDB 中的区别DISABLE KEYS 只对 MyISAM 表有效,它会临时关闭非唯一索引的更新,等 LOAD DATA 或批量 INSERT 完后再重建——但 InnoDB 不支持该语法,强行执行会报错 ERROR 1031 (HY000): Table storage engine for 't' doesn't have this option。InnoDB 正确做法是手动删索引再建: 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
更多推荐
所有评论(0)