当前位置: 首页 > news >正文

SqlBulkCopy类进行大数据(10000万条以上)插入测试

好多天没写博客了,刚刚毕业一个多月,在IT的路上真是迷茫啊!

关于上一篇博客中提到的,在进行批量数据插入数据库的时候可以通过给存储过程传递一个类型为Table的参数进行相关操作,在这个过程中本人没有进行效率的测试。后来查找发现可以通过SqlBulkCopy类进行大数据插入操作,本文就来介绍一个这个类的作用并做了相关的效率测试(与Insert语句进行对比)。

SqlBulkCopy只能向SqlServer表写入数据,该表既可以是同一个服务器上的也可以是远程服务器上的。当然要写入的数据即数据源不单单是SqlServer,可以是任何数据源,只要数据可以加载到DataTable中或者DataReader可以读取的数据。

SqlBulkCopy类批量插入数据代码如下:

1.先创建一个User类,对应数据库的User表。

  View Code

数据库User表结构:

2.创建一个返回存储了一万条数据的DataTable方法:

  View Code

3.在页面上放了一个按钮,点击该按钮便可进行数据的插入操作,按钮点击事件代码如下:

  View Code

SqlServer中通过Insert语句批量插入数据的代码如下:

1.首先创建一个插入一万条数据的存储过程,插入的数据与SqlBulkCopy插入的数据一模一样。

 

  View Code

 

2.执行存储过程。
EXEC dbo.USP_InsertUserTable

SqlBulkCopy与Insert语句效率测试对比如下:

SqlBulkCopy所用时间统计(5次):

SqlServer Insert语句所用时间统计(5次),通过工具--》Sql Server Profiler进行测试,使用的模板是TSQL_Duration:

有一点需要注意的:无论是SqlBulkCopy还是Insert语句进行操作,每次测试前都应该进行缓冲区清理以及删除原有数据,以免对测试进行影响,代码如下:

DBCC DROPCLEANBUFFERS
DBCC FREESYSTEMCACHE( 'ALL' ) 
DELETE dbo.[User]

 

结论:通过以上的统计分析测试,可以看出SqlBulkCopy操作大数据插入的效率性能明显比Insert语句更高效。

本人才疏学浅,哪里有不对的欢迎指出。

相关文章:

  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 【Linux系统编程】快速查找errno错误码信息
  • 关于aspx.designer.cs的研究
  • 精彩代码 vue.js
  • 霍夫变换直线检测
  • Netflix 混沌工程手册 Part 3:实践方法
  • 又一款博客园Android客户端低调推出
  • 基于虹软 人脸识别的闸机开发经验及源码分享
  • python 安装第三方模块
  • ajax与json
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • RPC
  • UI2Code智能生成Flutter代码——版面分析篇
  • ios设备唯一标识获取策略
  • Windows下使用资源管理器管理FTP指南
  • [case10]使用RSQL实现端到端的动态查询
  • 【React系列】如何构建React应用程序
  • Apache Zeppelin在Apache Trafodion上的可视化
  • bootstrap创建登录注册页面
  • Elasticsearch 参考指南(升级前重新索引)
  • emacs初体验
  • FineReport中如何实现自动滚屏效果
  • Git初体验
  • java2019面试题北京
  • JavaScript-Array类型
  • jQuery(一)
  • js中的正则表达式入门
  • MYSQL 的 IF 函数
  • tweak 支持第三方库
  • Vue.js-Day01
  • 代理模式
  • 关于Flux,Vuex,Redux的思考
  • 基于web的全景—— Pannellum小试
  • 通信类
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • mysql面试题分组并合并列
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (33)STM32——485实验笔记
  • (9)STL算法之逆转旋转
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)Oracle存储过程编写经验和优化措施
  • **PHP二维数组遍历时同时赋值
  • .java 9 找不到符号_java找不到符号
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET MVC之AOP
  • .NET 材料检测系统崩溃分析