數(shù)據(jù)庫事務(wù)

事務(wù)是指針對數(shù)據(jù)庫的一組操作,這組操作由一條或者多條sql語句組成。事務(wù)的執(zhí)行要么全部成功,要么返回到事務(wù)開始前的狀態(tài)。

//開啟事務(wù)
START TRANSACTION
//提交事務(wù)
COMMIT
//取消提交事務(wù)即回滾
ROLLBACK

事務(wù)四大特性

  • 原子性。一個(gè)事務(wù)中的sql語句要么全部執(zhí)行成功,要么全部執(zhí)行失敗,中間如果執(zhí)行錯(cuò)誤會(huì)返回到事務(wù)開始前的狀態(tài)。
  • 一致性。數(shù)據(jù)庫總是從一個(gè)一致性狀態(tài)到另外一個(gè)一致性狀態(tài),保證數(shù)據(jù)庫不會(huì)返回到一個(gè)未處理的事務(wù)中。
  • 隔離性。一個(gè)事務(wù)在執(zhí)行過程中并不會(huì)受到其他事務(wù)的影響。
  • 持久性。指事務(wù)一旦提交,對數(shù)據(jù)庫的修改時(shí)持久性的。

并發(fā)事務(wù)的問題

  • 臟讀。事務(wù)讀取其他事務(wù)未提交的數(shù)據(jù)。
  • 不可重復(fù)讀。一個(gè)事務(wù)在讀取某個(gè)數(shù)據(jù)一段時(shí)間后再去讀取該數(shù)據(jù)時(shí),兩次讀取的結(jié)果不一致。
  • 幻讀。一個(gè)事務(wù)按照相同的查詢條件進(jìn)行查詢時(shí),讀取了其他事務(wù)新增的數(shù)據(jù)。

事務(wù)的隔離級(jí)別

  • 讀未提交。一個(gè)事務(wù)可以讀取到其他事務(wù)未提交的數(shù)據(jù)。因此會(huì)造成臟讀。
  • 讀已提交。事務(wù)只能讀取其他事物已經(jīng)提交的數(shù)據(jù),避免了臟讀問題。
  • 可重復(fù)讀。解決了臟讀與不可重復(fù)讀問題。在讀取數(shù)據(jù)時(shí),在行記錄上加上共享鎖避免其他事物對該數(shù)據(jù)進(jìn)行修改,因此解決了不可重復(fù)讀問題。但是并不能避免其他事務(wù)insert插入新的數(shù)據(jù)因此造成幻讀問題。
  • 可串行化。在每個(gè)讀的數(shù)據(jù)行上加鎖,使其不會(huì)發(fā)生沖突,避免了臟讀,不可重復(fù)讀以及幻讀問題。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容