实战手记:让百万级数据瞬间导入SQL Server(2)

来源:asp之家 时间:2010-06-07 14:13:00 

方法三.在多线程中使用BULK INSERT

在方法二的基础上,将100万条数据分五个线程,每个线程负责20万条数据,每5万条一个事物,五个线程同时启动,看看这样的效果吧。

SQL Server 2000耗时:21099

SQL Server 2008耗时:10997

方法四.使用SqlBulkCopy类

这种方法速度也很快,但是要依赖内存,对于几千万条、多字段的复杂数据,可能在内存方面会有较大的消耗,不过可以使用64位解决方案处理这个问题。

几千万条、多字段的数据的情况一般在一些业务场景中会遇到,比如计算全球消费者某个业务周期消费额时,要先获得主数据库表中的会员消费记录快照,并将快照储存至临时表中,然后供计算程序使用这些数据。并且有些时候消费者的消费数据并不在一台数据库服务器中,而是来自多个国家的多台服务器,这样我们就必须借助内存或外存设备中转这些数据,然后清洗、合并、检测,最后导入专用表供计算程序使用。

基本语句:

using (System.Data.SqlClient.SqlBulkCopy sqlBC

= new System.Data.SqlClient.SqlBulkCopy(conn))

{ sqlBC.BatchSize = 100000; sqlBC.BulkCopyTimeout

= 60; sqlBC.DestinationTableName = "dbo.TableB";

sqlBC.ColumnMappings.Add("valueA", "Value1");

sqlBC.WriteToServer(dt); }

说明:

BatchSize = 100000; 指示每10万条一个事务并提交

BulkCopyTimeout = 60; 指示60秒按超时处理

DestinationTableName = "dbo.TableB"; 指示将数据导入TableB表

ColumnMappings.Add("valueA", "Value1"); 指示将内存中valueA字段与TableB中的Value1字段匹配

WriteToServer(dt);写入数据库。其中dt是预先构建好的DataTable,其中包含valueA字段。

SQL Server 2000耗时:4989

SQL Server 2008耗时:10412

方法五.在多线程中使用SqlBulkCopy类

基于方法四,将100万条数据分五个线程,每个线程负责20万条数据,每5万条一个事物,五个线程同时启动,看看这样的效果吧。

SQL 2000耗时:7682

SQL 2008耗时:10870

结果

几天的时间终于把这个实验给完成了,比较令人失望的是SQL SERVER 2008导入数据的性能似乎并不想我们想象的那样优秀。 

标签:数据,导入,SQL,Server,SQL教程
0
投稿

猜你喜欢

  • 利用Google Ajax Library API加速常用js类库的载入

    2008-06-17 17:44:00
  • 一份ASP内存的释放的实验报告

    2007-10-17 13:09:00
  • FrontPage2002简明教程四:网页超级链接

    2008-09-17 11:23:00
  • 使用单通道实现半透明效果

    2009-12-12 17:40:00
  • 请给PNG8一个机会

    2009-09-16 14:22:00
  • asp无组件实现画简单图形的类

    2004-06-17 13:30:00
  • 学ASP应该注意ASP程序书写的规范标准

    2008-10-17 10:16:00
  • CSS教程:简单理解em

    2008-07-03 12:44:00
  • 如何过滤中国站长站(chianz)文章干扰码

    2008-01-04 20:14:00
  • 不要放弃使用CSS中的新技术

    2009-05-15 12:49:00
  • javascript阻止事件冒泡和浏览器的默认行为

    2007-12-28 13:13:00
  • oracle应用程序实现打包 的方法

    2009-03-02 10:32:00
  • 用户体验 保守的使用下拉菜单

    2008-01-15 20:00:00
  • 再谈float菜单局中

    2009-12-21 19:57:00
  • Dreamweaver层使用八定律

    2008-05-16 11:41:00
  • 访问javascript私有变量

    2010-01-19 13:56:00
  • 极致之美——百行代码实现全新智能语言Lisp

    2010-07-13 13:07:00
  • ORACLE8的分区管理

    2010-07-30 13:18:00
  • ASP+ajax注册即时提示程序代码

    2011-02-05 11:25:00
  • Mootools常用方法扩展(五)

    2009-03-03 12:12:00
  • asp之家 网络编程 m.aspxhome.com