MySQL

1 事務(wù)

1.1 事務(wù)的特性

  • 原子性:是指事務(wù)包含所有操作要么全部成功,要么全部失敗回滾。
  • 一致性:指事務(wù)必須使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變換成另一個(gè)一致性狀態(tài),也就是說一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。拿轉(zhuǎn)賬來說,假設(shè)用戶 A 和用戶 B 兩者的錢加起來一共是 5000,那么不管 A 和 B 之間如何轉(zhuǎn)賬,轉(zhuǎn)幾次賬,事務(wù)結(jié)束后兩個(gè)用戶的錢相加起來應(yīng)該還得是 5000,這就是事務(wù)的一致性。
  • 隔離性:是當(dāng)多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫(kù)時(shí),比如操作同一張表時(shí),數(shù)據(jù)表為每個(gè)用戶開啟的事務(wù),不能被其他事務(wù)所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離。
  • 持久性:持久性是指一個(gè)事務(wù)一旦被提交,那么對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就是永久的,即便是在數(shù)據(jù)庫(kù)系統(tǒng)遇到故障的性況下也不會(huì)丟失提交事務(wù)的操作。

1.2 并發(fā)操作問題

  • 臟讀:臟讀是指在一個(gè)事務(wù)處理過程中讀取到了另外一個(gè)未提交事務(wù)中的數(shù)據(jù)。
  • 不可重復(fù)讀:不可重復(fù)讀是指在對(duì)于數(shù)據(jù)庫(kù)中的某個(gè)數(shù)據(jù),一個(gè)事務(wù)范圍內(nèi)多次查詢卻返回了不同的數(shù)據(jù)值,這是由于在查詢間隔,被另一個(gè)事務(wù)修改并提交了。
  • 虛讀(幻讀):幻讀發(fā)生在當(dāng)兩個(gè)完全相同的查詢執(zhí)行時(shí),第二次查詢所返回的結(jié)果集跟第一個(gè)查詢不相同。比如兩個(gè)事務(wù)操作,A 事務(wù)查詢狀態(tài)為 1 的記錄時(shí),這時(shí) B 事務(wù)插入了一條狀態(tài)為 1 的記錄,A 事務(wù)再次查詢返回的結(jié)果不一樣。

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

  • Serializable(串行化):可避免臟讀、不可重復(fù)讀、幻讀。(就是串行化讀數(shù)據(jù))
  • Repeatable read(可重復(fù)讀):可避免臟讀、不可重復(fù)讀的發(fā)生。
  • Read committed(讀已提交):可避免臟讀的發(fā)生。
  • Read uncommitted(讀未提交):最低級(jí)別,任何情況都無(wú)法保證。

在 MySQL 數(shù)據(jù)庫(kù)中,支持上面四種隔離級(jí)別,默認(rèn)的為 Repeatable read (可重復(fù)讀);而在 Oracle 數(shù)據(jù)庫(kù)中,只支持 Serializable (串行化)級(jí)別和 Read committed (讀已提交)這兩種級(jí)別,其中默認(rèn)的為 Read committed 級(jí)別。

參考

https://segmentfault.com/a/1190000022636122

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 數(shù)據(jù)庫(kù)簡(jiǎn)介 1. 定義 ? 數(shù)據(jù)庫(kù)就是存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),數(shù)據(jù)按照一定的格式進(jìn)行存儲(chǔ),用戶可以對(duì)數(shù)據(jù)庫(kù)中的...
    沙漠星海說遠(yuǎn)方近閱讀 361評(píng)論 0 0
  • 一、事務(wù)的四大特性(ACID) 如果一個(gè)數(shù)據(jù)庫(kù)聲稱支持事務(wù)的操作,那么該數(shù)據(jù)庫(kù)必須要具備以下四個(gè)特性: 1.1 原...
    AC編程閱讀 1,878評(píng)論 0 1
  • 什么是數(shù)據(jù)庫(kù)? 數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù), 每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不...
    騎小豬看流星閱讀 439評(píng)論 0 9
  • MySQL高級(jí)篇 一、MySQL存儲(chǔ)過程和函數(shù) 1.存儲(chǔ)過程和函數(shù)的概念 存儲(chǔ)過程和函數(shù)是 事先經(jīng)過編譯并存儲(chǔ)在...
    super_hongtao閱讀 815評(píng)論 0 0
  • 1.mysql 的引擎常用的為Innodb和MyIASM Innodb:對(duì)數(shù)據(jù)支持事物(ACID) ,提供...
    葉上初晨閱讀 162評(píng)論 0 0

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