前提
跑一个推荐算法的DEMO需要导入2百万的数据
尝试1 : batch insert
不动脑的想象用batch insert, 批量提交的方式
尝试发现其实速度并不乐观,2000条/分钟的写入速度,
200 0000 / 2000 = 100分钟,速度不能接受,尝试其他办法。
尝试2 : load data infile
大批量数据的正确方式就文件导入方式进行,个人觉得10万数据以上用batch insert就比较吃力了。
load data方法只支持mysql 5.5版本及以上
执行步骤:
- 检测mysql是否设置支持load data的执行
SHOW VARIABLES LIKE "secure_file_priv";
secure_file_prive=null 限制mysqld 不允许导入导出
secure_file_priv=/tmp/ 限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv=' ' 不对mysqld的导入导出做限制
修改secure_file_prive,直接找到my.ini中secure_file_prive修改为空重启mysql即可
- 执行load data file 语句
LOAD DATA INFILE "ratings.dat" REPLACE INTO TABLE movie_preferences FIELDS TERMINATED BY "::";
随意执行,如果位置不对会给出相应的提示位置,然后再将需导入的文件copy至相应位置再执行即可(load data infile语法需自行了解。)
- 执行结果
最后发现执行数据时间大幅度减少,200万数据只需要1分钟左右就导入成功。