1

我在这里阅读了很多关于这个主题的答案,但每个人都建议BCP|| SqlBulkCopy来自.net的类

我有一个查询,它从不同的表中插入5 个targetTable集。selects

我在选择的表上有正确的索引。并且只有 1 个聚集标识索引targetTable。然而,这需要很长时间(约 25 分钟)。我说的是 5M 行(x 20 列)。

当我看sp_who2的时候,大多数时候,它是suspended......

我想使用bulk复制但不是来自.net(数据库已经获取数据 - 所以我不需要去 C#)。

问题

  • 如何在我的选择命令中使用批量插入(无 bcp)?
  • 另外,为什么大部分时间都暂停?我怎样才能给我的查询更高的优先级

谢谢你。

psbcp由于安全限制,我不能在这里使用...我没有运行它的权限。

4

1 回答 1

0

你是对的:这比平时花费的时间更长。你每秒得到 3k 行。您应该很容易获得每秒 10k 或 20k 的速度。在最好的情况下,每个 CPU 内核每秒 200k

我怀疑你是在整个桌子上插入,而不仅仅是在最后。在这种情况下,每秒 3k 行并不罕见。

无论如何,批量复制无法帮助您。它的插入速度并不比仅服务器的插入语句快。

但是,您可以做的是使用多个线程插入。将您的行源划分为 N 个不同的范围,并从单独的连接同时插入每个范围。如果您受 CPU 限制,这将有所帮助。如果您受 IO 限制,则不会。

于 2012-06-28T13:50:46.743 回答