zoukankan      html  css  js  c++  java
  • 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语句更高效。

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

  • 相关阅读:
    强制表格内容不换行
    数组深度
    JDBC连接SQLService时报错误:“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接"
    Excel中神奇的vlookup函数之基础应用
    利用python进行泰坦尼克生存预测——数据探索分析
    pandas数据处理基础——基础加减乘除的运算规则
    pandas数据处理基础——筛选指定行或者指定列的数据
    python读取文本文件数据
    服务器硬件基础知识
    WordPress实现伪静态
  • 原文地址:https://www.cnblogs.com/armyfai/p/3903956.html
Copyright © 2011-2022 走看看