MySQL 大文件导入优化,提高速度,提升性能
2024年3月10日1 minutes
项目中需要根据 SQL 文件导入数据,文件大约 20G,正常导入约需要 2 小时,如何提高导入速度。
经过实验测试,如果一个 SQL 文件只有一个表的数据,可以直接使用 mysql load data infile 语法,速度比较快。
我们是一个 SQL 文件包含了很多表,mysql load data infile 就不支持了,可考虑在导入过程中设置如下参数,经过测试 20G 大约需要 40 分钟,比之前快了很多。
# 进入 mysql
mysql -u root -p
# 创建数据库(如果已经有数据库忽略此步骤)
CREATE DATABASE 数据库名;
# 设置参数
set sql_log_bin=OFF;//关闭日志
set autocommit=0;//关闭 autocommit 自动提交模式 0 是关闭 1 是开启(默认)
set global max_allowed_packet = 20 *1024* 1024 * 1024;
# 使用数据库
use 数据库名;
# 开启事务
START TRANSACTION;
# 导入 SQL 文件并 COMMIT(因为导入比较耗时,导入和 COMMIT 一行命令,这样不用盯着屏幕等提交了)
source /xxx.sql;COMMIT;