加速“任务”> SQL Server 2012中的“导入数据...”(索引和文件增长)?

时间:2016-01-08 21:53:36

标签: sql-server sql-server-2012

我正在使用右键单击“任务”>从一个SQL Server实例复制9900万行到另一个SQL Server实例。 “导入数据”方法。它只是直接复制到新的空表NDF文件上的新表。我正在使用身份插入进行复制,以便ID保持不变。这是非常缓慢的(12小时后有3000万条记录),所以我的老板告诉我取消它,从新的空表中删除所有索引,然后重新运行。

  1. 删除新表上的索引是否会真正加快记录的传输速度,为什么?我想我可以在表填满后创建索引。

  2. 右键单击“导入数据”背后的基础流程是什么?它是否使用SqlBulkCopy,是否记录了大量的东西?我知道它不在交易中,因为取消它会立即停止它并且已插入的行就在那里。

  3. 我保存表的NDF文件的文件增长为20MB。当在9900万条记录上使用上述记录时,是否会加快这一过程?这只是我的想法。

1 个答案:

答案 0 :(得分:0)

  1. 是的,它应该。插入的每个新行都将导致使用新数据更新每个索引。值得注意的是,如果删除索引,导入,然后重新添加索引,那么这些索引将需要很长时间才能构建。
  2. 它基本上是一个非常简单的SSIS包。它从源读取行并作为事务插入块。如果您的恢复模型设置为“完全”,则可以将其切换为“批量记录”以进行导入。但是,如果您在不对数据库进行其他更新时批量移动数据,则应该这样做。
  3. 我会尝试将MDF / NDF的大小调整到接近你期望的最终结果。自动增长可能需要一些时间,特别是如果你将它设置得低。