多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > Sqlserver > SQL Server中批量插入數(shù)據(jù)方式的性能對比

SQL Server中批量插入數(shù)據(jù)方式的性能對比

來源:程序員人生   發(fā)布時間:2014-03-14 02:40:31 閱讀次數(shù):3213次

  昨天下午快下班的時候,無意中聽到公司兩位同事在探討批量向數(shù)據(jù)庫插入數(shù)據(jù)的性能優(yōu)化問題,頓時來了興趣,把自己的想法向兩位同事說了一下,于是有了本文。

  公司技術(shù)背景:數(shù)據(jù)庫訪問類(xxx.DataBase.Dll)調(diào)用存儲過程實現(xiàn)數(shù)據(jù)庫的訪問。

  技術(shù)方案一:

  壓縮時間下程序員寫出的第一個版本,僅僅為了完成任務(wù),沒有從程序上做任何優(yōu)化,實現(xiàn)方式是利用數(shù)據(jù)庫訪問類調(diào)用存儲過程,利用循環(huán)逐條插入。很明顯,這種方式效率并不高,于是有了前面的兩位同事討論效率低的問題。

  技術(shù)方案二:

  由于是考慮到大數(shù)據(jù)量的批量插入,于是我想到了ADO.NET2.0的一個新的特性:SqlBulkCopy。有關(guān)這個的性能,很早之前我是親自做過性能測試的,效率非常高。這也是我向公司同事推薦的技術(shù)方案。

  技術(shù)方案三:

  利用SQLServer2008的新特性--表值參數(shù)(Table-Valued Parameter)。表值參數(shù)是SQLServer2008才有的一個新特性,使用這個新特性,我們可以把一個表類型作為參數(shù)傳遞到函數(shù)或存儲過程里。不過,它也有一個特點:表值參數(shù)在插入數(shù)目少于 1000 的行時具有很好的執(zhí)行性能。

  技術(shù)方案四:

  對于單列字段,可以把要插入的數(shù)據(jù)進行字符串拼接,最后再在存儲過程中拆分成數(shù)組,然后逐條插入。查了一下存儲過程中參數(shù)的字符串的最大長度,然后除以字段的長度,算出一個值,很明顯是可以滿足要求的,只是這種方式跟第一種方式比起來,似乎沒什么提高,因為原理都是一樣的。

  技術(shù)方案五:

  考慮異步創(chuàng)建、消息隊列等等。這種方案無論從設(shè)計上還是開發(fā)上,難度都是有的。

  技術(shù)方案一肯定是要被否掉的了,剩下的就是在技術(shù)方案二跟技術(shù)方案三之間做一個抉擇,鑒于公司目前的情況,技術(shù)方案四跟技術(shù)方案五就先不考慮了。

  接下來,為了讓大家對表值參數(shù)的創(chuàng)建跟調(diào)用有更感性的認識,我將寫的更詳細些,文章可能也會稍長些,不關(guān)注細節(jié)的朋友們可以選擇跳躍式的閱讀方式。

  再說一下測試方案吧,測試總共分三組,一組是插入數(shù)量小于1000的,另外兩組是插入數(shù)據(jù)量大于1000的(這里我們分別取10000跟1000000),每組測試又分10次,取平均值。怎么做都明白了,Let’s go!

  1.創(chuàng)建表。

  為了簡單,表中只有一個字段,如下圖所示:

  2.創(chuàng)建表值參數(shù)類型

  我們打開查詢分析器,然后在查詢分析器中執(zhí)行下列代碼:

Create Type PassportTableType as Table
(
PassportKey nvarchar(50)
)

  執(zhí)行成功以后,我們打開企業(yè)管理器,按順序依次展開下列節(jié)點--數(shù)據(jù)庫、展開可編程性、類型、用戶自定義表類型,就可以看到我們創(chuàng)建好的表值類型了如下圖所示:

  說明我們創(chuàng)建表值類型成功了。

  3.編寫存儲過程

  存儲過程的代碼為:

  USE [TestInsert]

  GO

  /****** Object: StoredProcedure [dbo].[CreatePassportWithTVP] Script Date: 03/02/2010 00:14:45 ******/

  SET ANSI_NULLS ON

  GO

  SET QUOTED_IDENTIFIER ON

  GO

  -- =============================================

  -- Author:

  -- Create date: <2010-3-1>

  -- Description: <創(chuàng)建通行證>

  -- =============================================

  Create PROCEDURE [dbo].[CreatePassportWithTVP]

  @TVP PassportTableType readonly

  AS

  BEGIN

  SET NOCOUNT ON;

  Insert into Passport(PassportKey) select PassportKey from @TVP

  END

  可能在查詢分析器中,智能提示會提示表值類型有問題,會出現(xiàn)紅色下劃線(見下圖),不用理會,繼續(xù)運行我們的代碼,完成存儲過程的創(chuàng)建

  

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 波多野结衣一区在线观看 | 精品中文字幕一区二区三区四区 | 国产精品区一区二区免费 | 欧洲色吧| 久久精品观看影院2828 | 欧美一级毛片香蕉网 | 亚洲人成在线影院 | 一级毛片不卡免费看老司机 | 狂野欧美性猛交xxxx免费按摩 | 亚洲精品视频免费观看 | 欧美视频在线一区二区三区 | 久久久日韩精品国产成人 | 香蕉在线精品一区二区 | 欧美久久一区二区三区 | 亚洲国语 | 日韩精品亚洲精品485页 | 最近免费中文字幕大全高清10 | 亚洲人xxx| 日本www免费| 久久国产精品免费一区二区三区 | 日本欧美韩国专区 | 亚洲国产成人在线观看 | 一个色综合久久 | 一级大黄美女免费播放 | 成人午夜影视全部免费看 | 又污又黄又无遮挡网站 | 亚洲欧洲久久久精品 | 国产成人综合亚洲欧洲色就色 | 国产一二三区有声小说 | 午夜网站免费版在线观看 | 91亚洲精品一区二区自 | a级成人毛片久久 | 在线播放一区二区三区 | 国产日韩久久 | 国产第一页福利 | 国产精品视频永久免费播放 | 欧美日韩aa一级视频 | 国产成人久久久精品毛片 | 12306午夜被窝播播影院yw188 | 在线观看日本www | 日韩欧美在线综合 |