日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

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


事務隔離級別

? ? SQL事務隔離級別由弱到強分別是:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。

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

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

? ? 臟讀:

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

? ? 不可重復讀:

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

? ? 幻讀:

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

? ? MySQL的默認事務隔離級別是REPEATABLE_READ,ORACLE、SQL Server、DB2和PostgreSQL的默認事務隔離級別是READ_COMMITED。


事務ACID特性

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

? ? 下面分別簡述:

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

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

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

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

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

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

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

轉載于:https://my.oschina.net/feichexia/blog/202520

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。