为什么BCP这么快?

时间:2011-07-22 17:33:49

标签: sql-server performance bcp

因此,将数据插入SQL Server数据库的BCP非常快。这是做什么让它如此之快?

4 个答案:

答案 0 :(得分:10)

在SQL Server中,BCP输入的记录方式与传统的insert语句截然不同。 SQL决定如何处理事情取决于许多因素,有些是大多数开发人员从未考虑过的事情,比如数据库设置使用的恢复模型。

bcp使用与BULK INSERT和SqlBulkCopy类相同的工具。

这里有更多细节 http://msdn.microsoft.com/en-us/library/ms188365.aspx

最重要的是,这些批量操作记录的数据少于正常操作,并且能够指示SQL Server忽略对传入数据的传统检查和平衡。所有这些都可以使它更快。< / p>

答案 1 :(得分:8)

它作弊。

它对内部结构有深入的了解,能够将输入数据更直接地映射到内部。它可以跳过其他重量级操作(如解析,优化,事务,日志记录,延迟索引,隔离)。它可以做出适用于普通插入sql语句不能的每一行数据的假设。

基本上,它可以跳过使数据库成为数据库的大部分功能,然后在最后集中清理。

答案 2 :(得分:3)

我知道bcp和普通插入之间的主要区别是bcp不需要为每个单独的事务保留单独的事务日志条目。

答案 3 :(得分:0)

速度是因为他们使用SQL Server Native Client ODBC驱动程序的BCP API。根据微软的说法:

http://technet.microsoft.com/en-us/library/aa337544.aspx

  

bcp实用程序(Bcp.exe)是一个使用Bulk的命令行工具   复制程序(BCP)API ...

批量复制功能参考:

http://technet.microsoft.com/en-us/library/ms130922.aspx