偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

日常Bug排查-應(yīng)用Commit報(bào)錯(cuò)事務(wù)并沒有回滾

運(yùn)維 數(shù)據(jù)庫運(yùn)維
日常Bug排查系列都是一些簡單Bug排查,筆者將在這里介紹一些排查Bug的簡單技巧,同時(shí)順便積累素材_。

[[405728]]

日常Bug排查系列都是一些簡單Bug排查,筆者將在這里介紹一些排查Bug的簡單技巧,同時(shí)順便積累素材_。

應(yīng)用Commit報(bào)錯(cuò)并不一定回滾

事實(shí)上,這篇文章并沒有什么排查過程。但這個(gè)問題卻又是筆者經(jīng)常遇到的。

筆者僅僅是想闡述一下當(dāng)我們?cè)谑聞?wù)Commit報(bào)錯(cuò)時(shí)候,數(shù)據(jù)庫中的數(shù)據(jù)并不一定會(huì)是我們以為的回滾狀態(tài)。筆者舉個(gè)例子:

在這種情況下,很明顯的DB的數(shù)據(jù)肯定是處于已經(jīng)提交的狀態(tài)。而如果App認(rèn)為是回滾狀態(tài),并基于這個(gè)信息去做操作的話,很明顯會(huì)導(dǎo)致數(shù)據(jù)不一致。

非IO or 超時(shí)異常 也不一定回滾

可能有人會(huì)問了,是不是僅僅是IO異?;蛘叱瑫r(shí)異常才會(huì)出現(xiàn)這種不一定回滾的問題呢?這里還真不一定,筆者在一次Case中,就發(fā)現(xiàn)Oracle在commit的時(shí)候返回死鎖異常時(shí)候,數(shù)據(jù)庫內(nèi)部的commit竟然也成功了!這就牽涉到數(shù)據(jù)庫內(nèi)部的處理了。

應(yīng)用應(yīng)該怎么做呢?

事實(shí)上,由于數(shù)據(jù)庫保證了原子性。所以我們?cè)谟龅竭@種情況時(shí)候,需要從數(shù)據(jù)庫中重建狀態(tài),而不是依賴現(xiàn)在應(yīng)用里面的信息。所以遇到異常直接將流程結(jié)束,然后等定時(shí)任務(wù)等補(bǔ)單操作是個(gè)比較簡單安全的做法。

當(dāng)然,數(shù)據(jù)庫中重建狀態(tài)時(shí)候,也要考慮到上一個(gè)相應(yīng)的commit還在commit的過程中,只不過這個(gè)commit非常慢而已。由于我們更新數(shù)據(jù)或者最終判斷的時(shí)候往往會(huì)鎖住數(shù)據(jù),而數(shù)據(jù)庫一般都是采用了二階段鎖(S2PL)。

在上一個(gè)commit成功提交之后,我們對(duì)相應(yīng)數(shù)據(jù)的操作才會(huì)執(zhí)行下去。所以只要小心的控制好鎖的范圍,數(shù)據(jù)一致性還是能保證的。

總結(jié)

Commit報(bào)錯(cuò)但事務(wù)并沒有回滾,這個(gè)雖然有點(diǎn)反直覺,但這確是在產(chǎn)線真實(shí)存在的,尤其在數(shù)據(jù)庫壓力大的時(shí)候極易出現(xiàn)。這個(gè)坑在我們編寫代碼的時(shí)候需要牢記!

本文轉(zhuǎn)載自微信公眾號(hào)「解Bug之路」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系解Bug之路公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 解Bug之路
相關(guān)推薦

2021-06-07 09:37:05

異常Bug排查

2009-02-17 09:11:42

Unix時(shí)間錯(cuò)誤

2023-08-28 08:24:07

myloaderMySQLGreatSQL

2013-05-06 09:19:36

云應(yīng)用趨勢(shì)云服務(wù)云管理工具

2009-02-19 20:25:34

SunSolaris發(fā)展趨勢(shì)

2011-09-23 09:42:25

2018-12-18 09:20:06

2021-06-04 11:33:50

消息技巧排查

2022-07-11 12:37:15

安全運(yùn)營網(wǎng)絡(luò)攻擊

2020-12-14 09:35:20

CentOSRockyLinux

2020-11-04 10:33:19

數(shù)據(jù)

2024-05-13 10:21:43

Bug排查TCP

2025-03-27 15:21:59

2016-02-15 09:52:21

虛擬現(xiàn)實(shí)

2009-07-20 18:11:52

iBATIS事務(wù)Spring

2015-08-27 09:43:00

開發(fā)者移動(dòng)應(yīng)用

2017-11-10 09:00:02

Linux桌面版市場(chǎng)占有率

2013-01-06 13:45:14

2010-05-19 09:15:31

云計(jì)算

2009-03-24 14:16:14

LinuxWindows多核芯片
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)