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文件的建议,在我的机器中找不到任何内容。
答案 0 :(得分:1)
在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小时
答案 1 :(得分:0)
如果以空表开头,则在没有任何索引的情况下创建它。然后,在完全填充表之后,报告添加索引比插入已经存在的索引更快。
请参阅:
可能有帮助:Create an index on a huge MySQL production table without table locking