最近碰到个项目,需要 千万条数据入库的问题,有原本的 类 csv 文件导入,
统计了下 数据行大概有 1400W 行之多
二话不说, 建表,直接 load
LOAD DATA LOCAL INFILE '/data/data.csv' INTO TABLE pk_book_price CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY ' ' (`no`,`name`,`price`,`ranking`);
照理说 这种方式 应该是非常快的, 可导入完成还是活生生地耗费了接近3个多小时。
后来经过搜集各方资料查证,终于找到还算靠谱的解决方案:
1、建表,但除去所有索引。
2、 依然 load data local infile 方式导入。
3、 数据导入完成后 再进行索引。
依照此过程下来,数据导入 花费差不多 5分钟左右, 索引重建在半小时左右,整个40分钟内完成。还算能接受了。
因此表只需满足 按照no查询即可,没有涉及 其他复杂sql,也无数据增量,只有简单key-value查询。所以没有作水平,垂直,分库 等操作,只建索引已经达到性能要求。
其他,不再多述。
有更好方法,请分享之。