
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实战手记:让百万级数据瞬间导入sql server想必每个dba都喜爱挑战数据导入时光,用时越短工作效率越高,也充分的能够证实自己的实力。实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推举一个挑战4秒极限让百万级数据眨眼导入sql server试验案例。 本试验将用法5中办法完成这个过程,并具体记录各种办法所耗费的时光。所用到工具为vial studio 2008和sql server 2000、sql server 2008,分离用法5中办法将100万条数据导入sql server 2000与sql server 2008中,试验环境是dell 2850双2.0
2、gcpu,2g内存的服务器。感爱好的伴侣可以下载源代码自己验证一下所用时光。 好了,下面我们分离用法基本的insert 语句、用法bulk insert语句、在多线程中用法bulk insert、用法sqlbulkcopy类、在多线程中用法sqlbulkcopy类五种办法,挑战4秒极限。还要有一点需要举行解释,本试验中执行sql语句的地方用法了isline framework框架中的dataprover模块,这个模块只是对sql配置的读取和封装,并不会对终于结果有本质性的影响,关于isline framework框架方面的学问,请参考“isline framework”框架系列文章。 数据库方
3、面用法sql server 2000与sql server 2008,表名tableb,字段名称为value1,数据库名可以在app.config中修改,默认为test。 办法一.用法基本的insert 语句 这种办法是最基本的办法,大多数人一开头都会想到这种办法。但是insert语句 乎并不适合大批量的操作,是不是这样呢? 本办法中将100万数据分为10个批次,每个批次10万条,每10万条1个事务,分10次导入数据库。 - 基本语句: insert into tableb (value1) values (” i ”); 解释:语句中的i是宿主程序中的一个累加变量,用于填充数据库字段中的 。
4、 sql server 2000 耗时:901599 sql server 2008耗时:497638 办法二.用法bulk insert语句 这个类的效果,在本试验中可以说是最令人惬意的了,它的用法最简便、灵便,速度很快。 “bulk insert”语句 乎不是很常用, aicken听说oracle中有一种可以将外部文件映射为oracle暂时表,然后挺直将暂时表中的数据导入oracle其他表中的办法,这种办法的速度十分令人惬意,sql server的bulk insert是不是同样令人惬意呢? - 基本语句: bulk insert tableb from ' c:sql.txt
5、39; with (fieldterminator = ',',rowter /.,mbminator='|',batchsize = 100000) 解释:“c:sql.txt”是一个预先生成的包含100条数据的文件,这些数据以“|”符号分隔,每10万条数据一个事务。 sql server 2000耗时:4009 sql server 2008耗时:10722 办法三.在多线程中用法bulk insert 在办法二的基础上,将100万条数据分五个线程,每个线程负责20万条数据,每5万条一个事物,五个线程同时启动,看看这样的效果吧。 sql server 200
6、0耗时:21099 sql server 2008耗时:10997 办法四.用法sqlbulkcopy类 这种办法速度也很快,但是要依靠内存,对于几千万条、多字段的复杂数据,可能在内存方面会有较大的消耗,不过可以用法64位解决计划处理这个问题。 几千万条、多字段的数据的状况普通在一些业务场景中会碰到,比如计算全球消费者某个业务周期消费额时,要先获得主数据库表中的会员消费记录快照,并将快照储存至暂时表中,然后供计算程序用法这些数据。并且有些时候消费者的消费数据并不在一台数据库服务器中,而是来自多个国家的多台服务器,这样我们就必需借助内存或外存设备中转这些数据,然后清洗、合并、检测,最后导入专用表
7、供计算程序用法。 基本语句: using (system.data.sqlclient.sqlbulkcopy sqlbc = new system.data.sqlclient.sqlbulkcopy(conn) sqlbc.batchsize = 100000; sqlbc.bulkcopytimeout = 60; sqlbc.destinationtablename = dbo.tableb sqlbc.columnmaps.a( 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 办法五.在多线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厦门租聘合同范本
- 医院主治医生聘用合同范本
- 南京钢材仓储合同范本
- 厨师临时合同范本
- 值班合同范本
- 厢式车购销合同范本
- 医疗供销合同范本
- 劳动合同范本范文
- 医保接口合同范本
- 双人投资合同范本
- 大模型专题:2024大模型技术及其在金融行业的应用探索报告
- 天津地区高考语文五年高考真题汇编-语言文字应用
- 特殊作业安全管理监护人专项培训课件
- 道路运输企业两类人员安全考核试题及答案
- 卫生技术人员准入制度
- 简单酒店装修合同书范本(30篇)
- 2024-2030年中国核桃油行业消费趋势及竞争格局分析研究报告
- 安全、环境、职业健康安全目标、指标及管理方案
- 课件:《中华民族共同体概论》第一讲 中华民族共同体基础理论
- JJF(皖) 179-2024 气体涡街流量计在线校准规范
- 2024-2025学年部编版九年级上册道德与法治综合检测题二
评论
0/150
提交评论