实战手记:让百万级数据瞬间导入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导入数据的性能似乎并不想我们想象的那样优秀。
猜你喜欢
- 在最近一个项目中,表单验证需要对时间的起止范围进行判断:结束时间需大于或等于开始时间。即:结束年须大于起始年;如果相等,则比较起始月与结束月
- 我生平不爱学习,所以说不出什么洋洋洒洒的大道理,貌似也写不出妙语连珠的学术文章,有感于现在宅到极致的生活状态,故一篇图文并茂的文章诞生了(大
- 用途:图片经常使用onload来改变宽度,但这样会出现图片的闪烁,这个简单的类就是用来解决这个问题的。函数loadImage,用来加载图片,
- 网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,有什么问题也可以大家一起交
- 请问如何使用CDONTS组件来发送电子邮件?我们可以在IIS4下使用CDONTS来完成。首先要确认是否安装了SMTP服务(OPTIONPAC
- conn.execute、rs.open之间的差别,conn.execute、rs.open、command.execute方法用法大大不同
- 上一篇:微软建议的ASP性能优化28条守则(6) 技巧 20:避免在循环语句中使用字符串串联 许多人在循环语句中建立一个字符串,如下所示:
- 在 asp 应用中,经常用到 Session 对象来保存用户临时私有数据,而 asp 的 Session 对象是依赖于浏览器的 Cookie
- 防止客户机的请求互相干扰或者服务器与维护程序相互干扰的方法主要有多种。如果你关闭数据库,就可以保证服务器和myisamchk和isamchk
- 常见的误解有: 1. 只用 ado.net ,无法进行动态 SQL 拼接。 2. 有几个动态参数,代码的重复量就成了这些参数的不同数量的组合
- 由于需求没有做好或者客户是外行,不能很好的配合你做好需求,我在使用asp+access的时候非常头疼,遇到数据结构的改动,就必须修改acce
- 随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,很多用ACCESS作数据库的更会深有体会,静态页加在搜索时,也会被优先考虑。互联
- 一直很想就搜索结果页写一些心得文章出来,甚至连目录都整理好了可是就是一直没有动手。因为总是觉得还差很多东西需要研究需要分析需要验证。最近也组
- 触发器权限和所有权CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner
- sql语句 代码如下:reverse(substring(reverse(Path),1,charindex('/'
- 在蓝色看到的这个程序,不错!by:thornyzhl前天看到有个人写了能在网页中写字的程序,找不到了,我来个能擦写的....蛮有意思的阿.~
- 阅读系列教程上一篇:FrontPage2002简明教程二:文字与图像的处理通常网页的布局使用到的是FrontPage 2002中的表格和框架
- 一. 网页挂马的概念: 网页挂马是指:在获取网站或者网站服务器的部分或者全部权限后,在网
- 一、若出现404错误,自动跳转到所在目录的首页;二、若当前页本身是目录首页,则自动跳转至上一级目录的默认首页。自定义404页面代码如下:&l
- 1.通过工具"DTS"的设计器进行导入或者导出DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一