简单实现SQL Server快速导入数据
下面让我们一起来学习数据库教程吧!这期的数据库教程讲述的是关于如何实现SQL Server快速导入数据的内容。具体如下:
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本。它的特点有:
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。
5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。
6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
如果需要向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 |
测试3
在这个测试中,我们运行了两个导入过程。第一次导入使用了一个含有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 |
#p#分页标题#e#
总结
我们可以从以上测试的结果看出,各种不同的条件会影响数据导入所用的时间。因此,如果想要更快地导入数据,可以导入不含任何索引的表,在导入完成之后再建立索引。不过我们的测试中没有检测在导入完成后建立索引所需要的时间。另外,还要注意确保你的数据和日志文件有足够的空间来完成这个导入过程而不会导致文件自动增长。文件自动增长会极大地影响总导入的速度。
以上为全部内容,如果你还有兴趣学习相关内容的话,可以前往课课家官方网查看相关的数据库学习视频。