- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的服务器维护,企业网站维护,网站维护服务
- (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
 
  
    
| 作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 | 
  本文介绍了几种不同的批量导入数据的方法、各种方法相应的实例及其所需的时间长短…… 
  如果需要向SQL Server批量导入数据,根据导入的选项和表中的索引设置,数据导入的时间可能会在不同情况下相差甚远。如何能够把批量导入的过程尽量少花时间呢?在这里我们将会介绍几种不同的批量导入数据的方法、各种方法相应的实例及其所需的时间长短。
 
  在我们的测试中我们采取了六种不同的数据导入方法:
  1. 表含有一个聚集索引(clustered index)和两个非聚集索引(non-clustered index)
  2. 表只含有一个聚集索引
  3. 表不含有任何索引
  4. 表不含有任何索引并且有TABLOCK指示
  5. 表只含有一个聚集索引并且有TABLOCK指示
  6. 表含有一个聚集索引一个聚集索引并且有TABLOCK指示
  另外,测试所用数据库在测试前设置为批日志恢复模式。
  这些测试中,每次迭代后数据库和日志都会清理日志文件,而且实施每一个步骤之前都将表删除,然后重新创建新表。
 
  测试一
  第一次运行是使用一个含有121317行的数据集和一个空表。每次运行之前都会重新创建符合测试的表。
  如下图结果所示,我们可以看出根据你用来导入数据的不同程序,运行时间有所不同。
ID 测试 运行(1) 运行(2) 
1 表含有一个聚集索引(clustered index)和两个非聚集索引(non-clustered index) 5.1 5.3 
2 表只含有一个聚集索引 3.2 3.0 
3 表不含有任何索引 1.4 1.4 
4 表只含有一个聚集索引并且有TABLOCK指示 1.2 1.3 
5 表只含有一个聚集索引并且有TABLOCK指示 2.8 2.5 
6 表含有一个聚集索引一个聚集索引并且有TABLOCK指示 4.1 3.9 
  测试2
  第二次运行是使用一个含有242634行的数据集和一个空表。每次运行之前都会重新创建符合测试的表。
  我们可以看到这些运行的时间有一些差别。
  ID Test 运行(1) 运行(2) 
1 表含有一个聚集索引(clustered index)和两个非聚集索引(non-clustered index) 14.0 13.8 
2 表只含有一个聚集索引 6.9 7.3 
3 表不含有任何索引 2.7 2.7 
4 表只含有一个聚集索引并且有TABLOCK指示 2.5 2.5 
5 表只含有一个聚集索引并且有TABLOCK指示 5.6 5.5 
6 表含有一个聚集索引一个聚集索引并且有TABLOCK指示 8.4 8.7 
  测试三
  在这个测试中,我们运行了两个导入过程。第一次导入使用了一个含有121317行和一个空表,然后在同一个表中导入另外121317条记录。每次运行之前都会重新创建符合测试的表。
  ID 测试 运行(1) 运行(2) 总时间 
1 表含有一个聚集索引(clustered index)和两个非聚集索引(non-clustered index) 8.4 7.7 16.1 
2 表只含有一个聚集索引 3.5 3.2 6.7 
3 表不含有任何索引 1.5 1.4 2.9 
4 表只含有一个聚集索引并且有TABLOCK指示 1.3 1.3 2.6 
5 表只含有一个聚集索引并且有TABLOCK指示 3.1 4.0 7.1 
6 表含有一个聚集索引一个聚集索引并且有TABLOCK指示 4.0 8.5 12.5 
  总结
  我们可以从以上测试的结果看出,各种不同的条件会影响数据导入所用的时间。因此,如果想要更快地导入数据,可以导入不含任何索引的表,在导入完成之后再建立索引。不过我们的测试中没有检测在导入完成后建立索引所需要的时间。
  另外,还要注意确保你的数据和日志文件有足够的空间来完成这个导入过程而不会导致文件自动增长。文件自动增长会极大地影响总导入的速度。
| 我要申请本站:N点 | 黑客防线官网 | | 
| 专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |