久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Mysql事務并發問題解決方案

瀏覽:3日期:2023-10-11 10:31:13

在開發中遇到過這樣一個問題

一個看視頻記錄,更新到100就表示看完了,后面再有請求不繼續更新了.

結果是:

Mysql事務并發問題解決方案

導致,里面很多數據出現問題.

推測是以下的情況才會導致

第一條請求 事務在執行中,還未提交(因為本地有時候比較難再現,于是手動在程序中,第一條記錄處理的時候,sleep了幾秒,就達到這種效果了)

第二條請求 事務已經開始執行,這個時候查到的歷史最大值不是100,才會去進行了更新

網上看了一下解決方案:

悲觀鎖

直接鎖行記錄

這個我在本地測試,確實有效,一個事務開始沒結束,第二個事務一個等待,不過會導致處于阻塞狀態,因為系統并發,不敢考慮,也就是記錄下這個方式.

手動模擬:

執行第一個事務:

-- 視頻100BEGIN;SELECT * FROM `biz_coursestudyhistory` WHERE sid = 5777166;UPDATE biz_coursestudyhistory set studyStatus = 100,versionNO=versionNO+1 WHERE sid = 1 AND versionNO = 0;-- commit ; 先不執行,先注解掉,只執行上面的

Mysql事務并發問題解決方案

接著執行第二個事務:

BEGIN; UPDATE biz_coursestudyhistory set studyStatus = 90,versionNO=versionNO+1 WHERE sid = 1 AND versionNO = 0; SELECT * FROM `biz_coursestudyhistory` WHERE sid = 1 FOR UPDATE; COMMIT;

會發現成功不了,一直處于等待狀態.

查看鎖

Mysql事務并發問題解決方案

確實被鎖住了,這里只要執行第一個事務的commit ,第二個事務就會執行.

從這里可以看出,行鎖可以直接達到理想的數據統一狀態,一個事務修改,其他都不能操作,感覺這種比較適合銀行這種安全性的項目

樂觀鎖:

這種比較簡單,并且不會造成阻塞

方式就是加上版本號

var maxver = select max(version) from table

更新的話使用

update table set studystatus = xxx,version = version +1 where id =1 and version = maxver

寫入的話

INSERT into table (contentStudyID,courseWareID,studyStatus,studyTime,endTime)SELECT 27047358,3163,100,333,NOW() FROM dual WHERE NOT EXISTS (SELECT 1 FROM table WHERE contentStudyID =27047358 ANDcourseWareID = 3163 )

這種方式,可以在更新或者寫入的時候,直接判斷庫里面存在的數據是否存在,如果不存在則是別其他的線程使用了.

修改為這種寫法后,使用jmeter進行多線程測試,從最開始的多條記錄更新成功,變成只有一個成功,后面的失敗.

從最開始的插入多條記錄,到后來的只能插入一條數據了

Mysql事務并發問題解決方案

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 免费视频一区二区 | 91在线高清 | 成人精品鲁一区一区二区 | 久久精品一区二区三区四区 | 国产精品美女久久久久久久网站 | 欧美日韩在线免费观看 | 国产精品99久久 | 亚洲欧美综合乱码精品成人网 | 日韩成人一区 | 久艹精品 | 波多野结衣中文字幕在线视频 | 中文字幕一区二区三区四区 | 天天操天天干天天干 | 国产一区二区三区免费在线观看 | 日韩91| 综合色婷婷一区二区亚洲欧美国产 | 色婷婷激情 | 国产精品1区二区 | 亚洲一区二区三区四区在线观看 | 欧洲黄色 级黄色99片 | 天天干干干干 | 中文字幕国产 | 97国产超碰 | 久久99爱视频 | 麻豆精品久久 | 免费午夜视频 | 亚洲精品乱码久久观看网 | 自拍偷拍欧美 | 日韩免费一区 | 免费在线黄 | 夜夜艹日日艹 | 日韩精品久久 | 红桃成人少妇网站 | 激情网五月天 | 欧美日韩成人一区 | 一区二区三区国产 | 在线看国产 | 中文字幕精品三级久久久 | 噜噜噜视频在线观看 | 国产一区二区三区91 | 一区二区三区高清不卡 |