mysql - 如何提高 MYSQL 中批量插入的性能
问题描述
env: windows 10
version mysql 5.7
Ram 32GB
ide : toad mysql
我有足够的硬件要求,但问题是插入到没有任何关系的简单表中的性能。我需要在桌子上有索引。
表结构
CREATE TABLE `2017` (
`MOB_NO` bigint(20) DEFAULT NULL,
`CAF_SLNO` varchar(50) DEFAULT NULL,
`CNAME` varchar(58) DEFAULT NULL,
`ACT_DATE` varchar(200) DEFAULT NULL,
KEY `2017_index` (`MOB_NO`,`ACT_DATE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我在上面使用将记录插入表中。没有索引大约需要 30 分钟,而索引需要 22 小时仍在继续。
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
LOAD DATA LOCAL INFILE 'D:/base/test/2017/2017.txt'
INTO TABLE 2017COLUMNS TERMINATED BY '|';
commit;
我已经看到更改 cnf 文件的建议,在我的机器中找不到任何文件。
解决方案
通过在 my.ini 中添加以下行。我能够实现它。
innodb_autoinc_lock_mode =2
sync_binlog=1
bulk_insert_buffer_size=512M
key_buffer_size=512M
read_buffer = 50M
和innodb_flush_log_at_trx_commit=2,我在另一个链接中看到它说它将速度提高到 160 倍。输出性能:超过 24 小时至 2 小时
推荐阅读
- node.js - 如何在 Kotlin-React-App 中导入 Bootstrap 库
- javascript - 无法部署到 Heroku,未进行任何更改
- python - 从字典中编写函数以与solve_ivp一起使用
- ios - 如何使用与日期键匹配的字典填充表格视图
- react-native-android - createMaterialTopnavigator React Navigation v5中屏幕之间的白色闪烁
- java - 为什么 ListView 没有保存到内存中?
- listview - 无法滚动列表视图内容
- google-api - Googleapis / Jquery 循环在 Macbook Air 上停止工作
- django - 如何向 Django Admin 添加自定义查询/查询集?
- laravel - 如何解决“未定义回声”错误?