回覆列表
-
1 # 西安石頭石頭
-
2 # NatASDFG
最近公司裡dubbo分散式框架,涉及java調儲存過程,才分清Java事務和資料庫事務是分開的,Java事務只能保證Java應用涉及到的事務提交或者回滾,資料庫事務能保證著資料庫事務提交或者回滾。由於定時任務排程超時,導致超時重試,結果產生重複資料
-
3 # 愛可生雲資料庫
加鎖情況與死鎖原因分析
為方便大家復現,完整表結構和資料如下:
CREATE TABLE `t3` (`c1` int(11) NOT NULL AUTO_INCREMENT,`c2` int(11) DEFAULT NULL,PRIMARY KEY (`c1`),UNIQUE KEY `c2` (`c2`)) ENGINE=InnoDBinsert into t3 values(1,1),(15,15),(20,20);
在 session1 執行 commit 的瞬間,我們會看到 session2、session3 的其中一個報死鎖。這個死鎖是這樣產生的:
java中的事物,一般是在service層控制的,主要是為了防止一些安全係數比較高的業務場景出現錯誤,最常用的就是轉賬操作,必須同時是轉出賬戶扣錢成功,轉入賬戶加錢成功。
mysql的鎖是資料庫自身的鎖,因為一個數據表可能存在多個人同時進行讀寫操作,可能多個人同時操作一條資料,但是你先改了資料,然後其他人也在修改,這樣就可能造成修改的資料出現誤差,mysql的資料可能存在錯讀,髒讀等情況的資料不正確。
這兩者不是一個東西