当数据量很大时,执行 mysql> source filename.sql 很慢,有什么办法更快

当数据量很大时,执行 mysql> source filename.sql  很慢,有什么办法更快

我给你最简单、最有效、立刻能上手的提速方案,只做最关键的几步,就能让大 SQL 导入快 10~100 倍,不用改复杂配置。

一、最快方案:执行 source 前,先运行这 4 行(必做)

先登录 MySQL,选中数据库,然后复制执行这 4 行:
sql 
SET autocommit = 0;
SET unique_checks = 0;
SET foreign_key_checks = 0;
SET SESSION tx_isolation = 'READ-UNCOMMITTED';
 
然后再执行:
sql 
source 你的文件.sql;
 
导入完成后,一定要恢复设置
sql 
COMMIT;
SET autocommit = 1;
SET unique_checks = 1;
SET foreign_key_checks = 1;
 

二、比 source 更快:用系统命令行导入(推荐)

不要在 mysql> 里面用 source,直接在 CMD / 终端执行:
bash
mysql -u用户名 -p 数据库名 < filename.sql
 
例子:
bash
mysql -uroot -p testdb < guolei.20260521sql.sql
 
速度比 source30%~200%

三、再加 2 个参数,速度再翻倍

bash
mysql -u用户名 -p --max_allowed_packet=1G --net_buffer_length=1M 数据库名 < filename.sql
 

四、如果你只能用 source(必须在 mysql> 里执行)

就在执行 source 前加这 5 行:
sql
USE 你的数据库;
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
SET tx_isolation='READ-UNCOMMITTED';

source filename.sql;

COMMIT;
SET autocommit=1;
SET unique_checks=1;
SET foreign_key_checks=1;
 

五、为什么原来这么慢?

  • 默认每插入一条就提交一次事务(极慢)
  • 默认每条都检查外键、唯一键(极耗资源)
  • source 会打印大量日志

六、最简单总结(照着做就行)

  1. 导入前关闭自动提交、外键检查、唯一检查
  2. 优先用命令行导入,不要用 mysql> source
  3. 加参数 --max_allowed_packet=1G
posted @ 2026-05-22 07:30  emanlee  阅读(47)  评论(0)    收藏  举报