我正在使用BCP导入大量数据,我很好奇它有哪些选项来提高此操作的速度.
我读到了几个地方的并行加载,并且看到你可以告诉它不要费心排序数据或检查约束(这对我来说都是可行的选项,因为源是另一个具有良好完整性的数据库).
我没有看到使用这些选项的示例(例如,我不知道什么命令行开关启用并行加载或禁用检查禁用).
有没有人知道学习这个的好资源,或者有人能给我一些简单的例子吗?请不要指向BCP参数帮助页面,关于这些特定选项,我无法做出正面或反面.
任何帮助是极大的赞赏!
看起来您所说的并行加载只是针对同一个表运行 BCP 实用程序的多个实例。您将负责事先对数据进行分区。您可以通过指定表提示来使用它TABLOCK。来自 MSDN:
批量更新 (BU) 锁允许进程将数据同时批量复制到同一个表中,同时防止其他未批量复制数据的进程访问该表。
所以它实际上只是 BCP 的特殊锁。
为了进一步提高性能,您可以进一步阅读BCP 参数-a页面上的标志。
-a允许指定更大的数据包大小(4096 到 65535 之间),以增加每个网络数据包一次发送到服务器的数据量。
-e如果您打算运行多个 BCP 进程来帮助跟踪遇到的任何错误,我还建议使用带有错误的标志。
您需要阅读"数据加载性能指南".没有神奇的命令行开关'加载更快',在正确的上下文中做正确的事情是一个非常复杂的平衡.这取决于您是加载堆还是B-Tree,是否已存在数据或表是否为空,是否具有二级索引,是否可以在数据库恢复模型中进行最小日志记录,表是否已分区,数据是否已预先排序,而且只是表面.链接的白皮书包含所有细节.