91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫的樂觀鎖如何實現

發布時間:2022-09-28 09:58:54 來源:億速云 閱讀:168 作者:iii 欄目:數據庫

本文小編為大家詳細介紹“數據庫的樂觀鎖如何實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“數據庫的樂觀鎖如何實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

線程鎖分類有很多種,樂觀鎖是其中之一。樂觀鎖的實現是通過數據版本(Version)記錄機制實現的,是樂觀鎖最常用的實現方式。什么是數據版本?即為數據添加版本標識,一般是通過在數據庫中添加數字“版本”字段來實現的桌子。讀取數據時,將version字段的值一起讀取,每次更新數據時version值加一。當我們提交更新時,我們判斷數據庫表中對應記錄的當前版本信息與第一次檢索到的版本值進行比較。如果數據庫表的當前版本號等于第一次檢索到的版本值,則更新它。否則視為過期數據。

1.數據庫表設計

任務

共有三個字段,分別是id、value、version

2.實現

(1)首先讀取task表中的數據(實際上這個表只有一條記錄),得到version的值為versionValue

(2)每次更新任務表中的value字段,為了防止沖突,需要這樣做

更新任務集 value = newValue,version = versionValue + 1

其中 version = versionValue;

只有當這條語句執行時,才表示value字段的值更新成功

例如,如果有兩個節點 A 和 B 更新任務表中的 value 字段值,大約同時,節點 A 和節點 B 從任務表中讀取的版本值是 2,那么節點 A 和節點B 正在更新 value 字段值時,更新任務集 value = newValue, version = 3 where version = 2;,其實只有 1 個節點執行 SQL 語句成功,假設 A 節點執行成功,那么 version 字段此時任務表的值為3,然后B節點操作update task set value = newValue, version = 3 where version = 2; 不執行這條SQL語句,這樣更新任務表時不會發生沖突。

3.項目中的用例

     /**
     	 * 基于樂觀鎖的更新操作
     	 * @param editFinance 編輯的賬戶對象
     	 * @param queryLockNo 上一次查詢的樂觀鎖版本號
     	 * @return    
     	 */
     @覆蓋
     公共 int  updateForLockNo (BzFinanceEntity editFinance, int queryLockNo)  {
     		editFinance.setLockNo(queryLockNo +     1 ); 
     //修改樂觀鎖版本
     		BzFinanceEntityExample 示例 =
     新BzFinanceEntityExample();
     		BzFinanceEntityExample.Criteria 標準 = example.createCriteria();
     		criteria.andIdFinanceEqualTo(editFinance.getIdFinance());
     		criteria.andLockNoEqualTo(queryLockNo);     //基于樂觀鎖,修改查詢版本的數據	
     //根據Example條件更新不為null的實體BzFinanceEntity的屬性值	
     int mark = 
      this .baseEntityDao.updateByExampleSelective(editFinance, example);		
     返回標記;
     	}

讀到這里,這篇“數據庫的樂觀鎖如何實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万载县| 大化| 大悟县| 新源县| 庆城县| 义马市| 法库县| 乐陵市| 临沧市| 巴林右旗| 山阳县| 鸡泽县| 宜阳县| 福贡县| 土默特左旗| 灌南县| 阳谷县| 宁蒗| 富平县| 钟山县| 南华县| 仁怀市| 太原市| 乌鲁木齐市| 海城市| 平阳县| 宜兰市| 华亭县| 炎陵县| 定兴县| 利津县| 宁蒗| 钟祥市| 鸡东县| 凤庆县| 宁波市| 元阳县| 垦利县| 古蔺县| 大宁县| 临海市|