事務的特性 隔離級別和併發問題

2021-09-25 15:33:52 字數 1206 閱讀 3107

事務的特性、隔離級別和併發問題

1.事務的特性acid

2.併發訪問問題----由隔離性引起

3.事務的隔離級別

4.總結/概念

1.事務的特性acid

1)原子性(atomicity)原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

2)一致性(consistency)乙個事務中,事務前後資料的完整性必須保持一致。

3)隔離性(isolation)多個事務,事務的隔離性是指多個使用者併發訪問資料庫時, 乙個使用者的 事務不能被其它使用者的事務所干擾,多個併發事務之間資料要相互隔離。

4)永續性(durability)永續性是指乙個事務一旦被提交,它對資料庫中資料的改變 就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。

2.併發訪問問題----由隔離性引起

如果不考慮隔離性,事務存在3中併發訪問問題。

1)髒讀:b事務讀取到了a事務尚未提交的資料 ------ 要求b事務要讀取a事 務提交的資料

2)不可重複讀:乙個事務中 兩次讀取的資料的內容不一致 ----- 要求的是乙個事 務中多次讀取時資料是一致的 — unpdate

3)幻讀/虛讀:乙個事務中 兩次讀取的資料的數量不一致 ----- 要求在乙個事務多 次讀取的資料的數量是一致的 --insert delete

3.事務的隔離級別

1)read uncommitted : 讀取尚未提交的資料 :哪個問題都不能解決

2)read committed:讀取已經提交的資料 :可以解決髒讀 ---- oracle、sql server、postgresql 預設的

3)repeatable read:重讀讀取:可以解決髒讀 和 不可重複讀 —mysql預設的

4)serializable:序列化:可以解決 髒讀 不可重複讀 和 虛讀—相當於鎖表

4.總結/概念

事務的特性:acid

併發問題:髒讀、不可重讀、虛讀\幻讀

解決併發:設定隔離級別

read uncommitted

read committed (oracle、sql server、postgresql 預設的)

repeatable read (mysql預設)

serialazable

隔離級別的效能:read uncommitted>read committed>repeatable read>serialazable

事務併發問題和隔離級別

事務有四個屬性,acid。事務併發會造成三個問題 髒讀,不可重複讀,幻讀。髒讀 事務a讀了事務b更新的資料,然後事務b回滾撤銷了,事務a讀取的資料就是髒讀。不可重複讀 事務a讀取資料num後,事務b對其修改,事務a再次讀取資料num,前後不一致,這情況為不可重複讀。幻讀 事務a讀取資料 一張表 事務...

MySQL事務隔離級別及事務併發問題

1 原子性 atomicity 事務一旦開始,那麼我們只能有兩個結果,要麼全部執行完成,要麼全部都不做,不能停滯在事務中途。如果在執行 錯,必須把事務回滾到事務開始前。2 一致性 consistency 事務開始前和結束後,資料庫的完整性約束沒有被破壞 比如買東西,付款的時候,我扣錢成功了,對方也一...

MySQL事務隔離級別 解決併發問題

mysql事務隔離級別 1.髒讀 騙錢的手段,兩個視窗或執行緒分別呼叫資料庫轉賬表,轉賬後未提交,對方檢視到賬後,rollback,實際錢沒轉.演示方法 mysql預設的事務隔離級別為repeatable read 比oracle高,因為mysql本身弱 使用select tx isolation ...