日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【概念原理】四种SQL事务隔离级别和事务ACID特性

發(fā)布時間:2025/4/16 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【概念原理】四种SQL事务隔离级别和事务ACID特性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

? ? 事務(wù)是一組讀寫操作,并且具有只有所有操作都成功才算成功的特性。


事務(wù)隔離級別

? ? SQL事務(wù)隔離級別由弱到強(qiáng)分別是:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。

? ? 下表是這四種事務(wù)隔離級別對臟讀、不可重復(fù)讀和幻讀的支持情況:

隔離級別臟讀(Dirty read)不可重復(fù)讀(Non-repeatable read)幻讀(Phantom read)
READ_UNCOMMITED允許允許允許
READ_COMMITED不允許允許允許
REPEATABLE_READ
不允許不允許允許
SERIALIZBLE不允許不允許不允許

? ? 臟讀:

? ? 臟讀指的是一個事務(wù)允許讀取其他正在運行的事務(wù)還沒有提交的改變。這種情況的發(fā)生主要因為沒有加鎖。

? ? 不可重復(fù)讀:

? ? 不可重復(fù)讀是指事務(wù)A讀取了事務(wù)B已經(jīng)提交的更改數(shù)據(jù)。不可重復(fù)讀指的是一個事務(wù)內(nèi)連續(xù)讀卻得到不同的結(jié)果,主要因為同時有其他事務(wù)更新了我們正在讀取的數(shù)據(jù)。要達(dá)到允許可重復(fù)讀的目的,我們必須讓當(dāng)前事務(wù)保持一個讀共享鎖。

? ? 幻讀:

? ? 幻讀指的是事務(wù)不是串行發(fā)生時發(fā)生的一種現(xiàn)象,是事務(wù)A讀取了事務(wù)B已提交的新增數(shù)據(jù)。例如第一個事務(wù)對一個表的所有數(shù)據(jù)進(jìn)行修改,同時第二個事務(wù)向表中插入一條新數(shù)據(jù)。那么操作第一個事務(wù)的用戶就發(fā)現(xiàn)表中還有沒有修改的數(shù)據(jù)行,就像發(fā)生了幻覺一樣。解決幻讀的方法是增加范圍鎖(range lock)或者表鎖。四種事務(wù)隔離級別中只有SERIALIZABLE能夠解決幻讀。

? ? MySQL的默認(rèn)事務(wù)隔離級別是REPEATABLE_READ,ORACLE、SQL Server、DB2和PostgreSQL的默認(rèn)事務(wù)隔離級別是READ_COMMITED。


事務(wù)ACID特性

? ? 事務(wù)的ACID特性分別指的是原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。

? ? 下面分別簡述:

? ? 原子性:將一組操作組合成原子操作,只有所有操作都成功才算成功,否則只要有一個操作失敗就全部失敗

? ? 一致性:事務(wù)必須保證系統(tǒng)處于一致性狀態(tài),不管事務(wù)如何交織并發(fā)執(zhí)行。必須保證下面幾條:

  • 如果一個操作觸發(fā)了間接行為(CASCADE、TRIGGER等),那么間接行為也必須成功,否則事務(wù)失敗

  • 如果一個系統(tǒng)包含多個數(shù)據(jù)節(jié)點,那么一致性強(qiáng)制要求修改必須傳播到所有節(jié)點

  • 雖然事務(wù)可以并行執(zhí)行,但系統(tǒng)就好像在串行執(zhí)行事務(wù)一樣,即與串行執(zhí)行事務(wù)導(dǎo)致的最終系統(tǒng)狀態(tài)是一樣的

? ? 隔離性:隔離性保證一個事務(wù)中未提交的修改對外界不可見。隔離性通過鎖機(jī)制達(dá)到。

? ?持久性:一個成功的事務(wù)必須永久改變系統(tǒng)的狀態(tài),在事務(wù)執(zhí)行結(jié)束之前狀態(tài)改變被記錄在事務(wù)日志中。這樣萬一系統(tǒng)崩潰或斷電,未完成的事務(wù)也可以回放。

轉(zhuǎn)載于:https://my.oschina.net/feichexia/blog/202520

總結(jié)

以上是生活随笔為你收集整理的【概念原理】四种SQL事务隔离级别和事务ACID特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。