我读过一篇文章提到,我们可以通过使用LOAD DATA IN FILE语句达到每秒60000个插入,从csv文件中读取数据并将数据插入数据库。
为什么它应该区别于普通的插入?
编辑:
我只调用了一个INSERT语句,从而减少了往返时间:
INSERT INTO tblname
VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1')
,(NULL,2,'some text here2'),(NULL,2,'some text here3')
.....,(NULL,2,'some text here3000');那这个呢?
发布于 2012-04-20 12:37:20
大多数数据库管理系统都有一个大容量加载工具,可以快速加载大量数据。INSERT语句包含大量的每个语句的行李锁定、事务划分、引用完整性检查、资源分配、必须在每个语句基础上执行的I/O操作。
批量插入操作简化了流程,这样每一行的开销就少得多。DBMS可以比insert语句更快地大容量加载数据。
发布于 2012-04-20 10:42:23
解析和执行单个INSERT语句比将CSV文件拆分为列并直接加载它们有更大的开销。
每个INSERT语句都必须由MySQL引擎单独解析并检查有效性--这将消耗额外的client<>server资源&还需要更多的client<>server往返。这不需要在通过LOAD DATA INFILE进行批量装载时发生。在使用LOAD DATA INFILE加载到空表时,也可以进行优化。有关详细信息,请参阅此链接。
https://dba.stackexchange.com/questions/16809
复制相似问题