在多 " /> 亚洲一区日韩一区欧美一区a,FREEXXX性乌克兰XXX,3D内射动漫同人资源在线观看

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

技術詳解:三招優化.NET中的鎖(組團)

  在這篇文章中,我將使用三個方法處理樂觀鎖,包括ADO.NET數據集、SQL Server時間戳數據類型和新舊值檢查,首先我們從并發談起,探討5個并發問題,然后從實際出發,利用這三種方法實現樂觀鎖。

  為什么需要鎖?
  在多用戶環境中,大家同時更新相同的記錄可能會引發沖突,這個問題用專業的術語描述就叫做并發性。并發會造成什么樣的沖突?并發主要會導致四種常見的問題,詳細情況請看下表。

  如何解決上述沖突?
  答案是使用樂觀鎖或悲觀鎖,下面將進一步進行闡述。什么是樂觀鎖?顧名思義,樂觀鎖假設多個事務相互不會影響對方,換句話說就是,在樂觀鎖模式下,沒有鎖操作會得到執行,事務只是驗證是否有其它事務修改數據,如果有則進行事務回滾,否則就提交。

  樂觀鎖是如何工作的?
1、實現樂觀鎖的方法有多種,但基本原則都一樣,總是少不了下面五個步驟:
2、記錄當前的時間戳
3、開始修改值
4、在更新前,檢查是否有其他人更新了值(通過檢查新舊時間戳實現)
5、如果不相等就回滾,否則就提交

圖 1 樂觀鎖的工作原理

  實現樂觀鎖的解決方案

  在.NET中,實現樂觀鎖的方法主要有三種:
1、數據集(Dataset):數據集是實現樂觀鎖的默認方法,在更新前它會檢查新舊值。
2、時間戳數據類型(timestamp):在你的表中創建一個timestamp數據類型,在更新時,檢查舊時間戳是否等于新時間戳。
3、直接檢查新舊值:在更新時檢查舊值和新值是否相等,如果不相等就回滾,否則就提交。

  解決方案1:數據集
  正如前面所說的,數據集是處理樂觀鎖的默認方法,下面是一個簡單的快照,在Adapter的update函數上有一個調試點,當我移除斷點運行update函數時,它拋出如下圖所示的并行異常錯誤。

圖 2 Update函數執行時拋出的異常錯誤

  如果你運行后端分析器,你將會看到更新語句檢查當前值和舊值是否相等:

  在這種情況下,我嘗試將“AuthorName”字段值修改為“This isnew”,但更新時會檢查舊值“This is old author”,下面是比較舊值的精簡代碼段:

  解決方案2:使用timestamp數據類型

  SQL Server有一個數據類型是timestamp,它是實現樂觀鎖的另一種途徑,每次更新SQL Server數據時,時間戳會自動產生一個唯一的二進制數值,時間戳數據類型可用來版本化你的記錄更新。

圖 3 timestamp數據類型

  為了實現樂觀鎖,首先需要取得舊的時間戳值,在更新時檢查舊的時間戳值是否等于當前時間戳,如:

  然后檢查是否發生了更新操作,如果沒有發生更新,則使用SQL Server的raiserror產生一系列錯誤消息。

  如果發生了并發沖突,當你如下圖所示這樣調用ExecuteNonQuery時,你應該會看到錯誤傳播。

圖 4 時間戳發生變化,存儲過程產生了錯誤

  解決方案3:檢查舊值和新值
  許多時候,我們只需要檢查相關字段值的一致性,其它字段則可以忽略,在update語句中,我們可以直接做這種比較。

NET技術技術詳解:三招優化.NET中的鎖(組團),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 免费中文字幕视频 | 综合久久伊人 | qq快播电影网 | 亚洲中文久久久久久国产精品 | G0GO人体大尺香蕉 | 丰满人妻无码AV系列 | 亚洲一日韩欧美中文字幕在线 | 国产在线观看www鲁啊鲁免费 | 在线免费观看亚洲视频 | 好大的太粗好深BL | 99久久国产综合精品国 | 精品久久香蕉国产线看观看麻豆 | 国产亚洲精品久久久久久久软件 | 九九这里有精品 | 少妇精油按摩 | 被强J高H纯肉公交车啊 | 亚洲国产精品99久久久久久 | 三级全黄的视频 | 国产99小视频 | 双性h浪荡受bl | 亚洲欲色欲色XXXXX在线AV | 亚洲成人国产 | 伊人久久大香线蕉综合99 | 小荡娃奶真大 | 办公室韩国电影免费完整版 | 精品亚洲视频在线观看 | 乡村教师电影完整版在线观看 | 国产69精品久久久久妇女 | 777久久人妻少妇嫩草AV蜜桃 | YELLOW高清视频免费观看 | 吉吉av电影 | 国产喷水1区2区3区咪咪爱AV | 国产欧美无码亚洲 | 国语自产一区第二页 | 亚洲人成77777在线视频 | 超碰视频在线观看 | 国产a级黄色毛片 | 久久中文字幕亚洲 | 蜜芽一区二区国产精品 | 99国产精品久久久久久久日本竹 | 久久 这里只精品 免费 |