“批量插入很慢”通常不是 SQL 本身的问题,而是写入路径上的某一环被放大了。下面按最常见原因给你一个排查清单,你可以对照看是哪一类。
INSERT INTO t VALUES (...);
INSERT INTO t VALUES (...);
...
COMMIT; -- 最后才提交
或每条都:
INSERT ...; COMMIT;
✅ 正确做法:
BEGIN;
INSERT ...;
INSERT ...;
COMMIT;
很多人以为这是批量:
for row in rows:
insert(row)
✅ 真正批量:
INSERT INTO t (a,b,c) VALUES
(1,2,3),
(4,5,6),
(7,8,9);
COPY / LOAD DATA / bulk insert每插入一行:
✅ 优化:
ALTER TABLE t DISABLE KEYS;
-- insert
ALTER TABLE t ENABLE KEYS;
每一行都做父表校验
✅ 优化:
SET FOREIGN_KEY_CHECKS = 0;
-- insert
SET FOREIGN_KEY_CHECKS = 1;
批量大时:
✅ 优化:
innodb_buffer_pool_sizesync_binlog=1✅ 优化:
很多 ORM 会:
✅ 优化:
每条 INSERT 一次 RTT
✅ 优化:
以下情况慢是正常的:
批量插入慢,90% 是因为:不是真批量 + 事务太碎 + 索引太多
如果你愿意,可以告诉我:
我可以直接给你针对性优化方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。