这段时间做性能测试,发现数据都是分库写进数据库了,并且要构造大量数据,大概4000万的数据量,用普通的方法,写个MySQL函数,之前测试过,大概200万数据也要跑一个多小时,太慢了. 后面研究发现有个很快的方法, 先写个Java小工具(这样比较灵活了, 可以根据自己的需要构造不同的测试数据), 按照分库规则生成8个文件(项目分库是分8个库), 4000万的数据写进数据库, 20分钟不到就能完成, 速度达3万/s. 使用MySQL的命令 LOAD DATA INFILE:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name,...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
命令: LOAD DATA INFILE "/data/mysql/data.txt" REPLACE INTO TABLE t_mytable FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'
Java小工具生成的文件格式如下:
a|b|c|d
e|f|g|h
...