首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“加载数据INFILE”比普通INSERT语句快?

问为什么“加载数据INFILE”比普通INSERT语句快?
EN

Database Administration用户
提问于 2012-04-20 10:35:01
回答 2查看 38K关注 0票数 23

我读过一篇文章提到,我们可以通过使用LOAD DATA IN FILE语句达到每秒60000个插入,从csv文件中读取数据并将数据插入数据库。

为什么它应该区别于普通的插入?

编辑:

我只调用了一个INSERT语句,从而减少了往返时间:

代码语言:javascript
复制
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');

那这个呢?

EN

回答 2

Database Administration用户

发布于 2012-04-20 12:37:20

大多数数据库管理系统都有一个大容量加载工具,可以快速加载大量数据。INSERT语句包含大量的每个语句的行李锁定、事务划分、引用完整性检查、资源分配、必须在每个语句基础上执行的I/O操作。

批量插入操作简化了流程,这样每一行的开销就少得多。DBMS可以比insert语句更快地大容量加载数据。

票数 4
EN

Database Administration用户

发布于 2012-04-20 10:42:23

解析和执行单个INSERT语句比将CSV文件拆分为列并直接加载它们有更大的开销。

每个INSERT语句都必须由MySQL引擎单独解析并检查有效性--这将消耗额外的client<>server资源&还需要更多的client<>server往返。这不需要在通过LOAD DATA INFILE进行批量装载时发生。在使用LOAD DATA INFILE加载到空表时,也可以进行优化。有关详细信息,请参阅此链接。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/16809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档