事務的併發處理

2022-09-12 16:03:25 字數 876 閱讀 5875

事務特性:

acid

automic :原子性

consistent:一致性

itegrity:隔離性

durability:永續性

1、一致性:將事務中所做的操作**成乙個原子單元,即對於事務所進行的資料修改等操作,要麼全部執行,要麼全部不執行。

2、原子性:事務在完成時,必須使所有的資料都保持一致狀態,而且在相關資料中,所有規則都必須應用於事務的修改,以保持所有資料的完整性。事務結束時,所有的內部資料結構都應該是正確的。

3、隔離性:由併發事務所做的修改必須與任何其他事務所做的修改相隔離。事務檢視資料時資料所處的狀態,要麼是被另一併發事務修改之前的狀態,要麼是被另一併發事務修改之後的狀態,即事務不會檢視由另乙個併發事務正在修改的資料。這種隔離方式也叫可序列性。

4、永續性:事務完成之後,它對系統的影響是永久的,即使出現系統故障也是如此。

併發導致的問題:

1.髒讀

讀了其他事務未提交的資料,中間可能有事務回滾的情況,在讀取資料的過程中,有其他事務回滾了該資料。

2.不可重複讀

在同乙個事務裡,兩次讀取的資料不一致,在讀取資料的過程中,有其他事務更新了該資料。

3.幻讀:

在讀取資料的過程中,有其他事務插了一條新的資料。

事務的隔離級別

mysql檢視事務的隔離級別:select @@tx_isolation 

詳見:16 [個人補充知識點]在spring中定義了5中不同的事務隔離級別

為了保證效率的高效採用read commited 但是這樣不能保證不可重複讀的問題,為此我們用悲觀鎖,樂觀鎖

依賴於資料庫的

悲觀鎖:直接加鎖,知道處理完成。

樂觀鎖:先執行,後檢查是否對所操作的資料有改動。

事務併發處理帶來的問題

丟失更新 兩個人 甲和乙 同時讀取乙個資料,甲修改完資料並寫回資料庫。接著乙也修改資料並寫回資料庫。導致甲的修改被覆蓋 讀髒資料 甲修改了資料,乙讀取甲修改後的資料,但由於某種原因甲撤銷事務。導致乙讀取的資料不正確 不可重複讀 事務1讀取資料後,事務2執行更新操作,使事務1無法再現前一次讀取結果。或...

sqlserver併發處理,鎖和事務

本文系 謝謝 另外這個也不錯 鎖的概述 一.為什麼要引入鎖 多個使用者同時對資料庫的併發操作時會帶來以下資料不一致的問題 丟失更新 a,b兩個使用者讀同一資料並進行修改,其中乙個使用者的修改結果破壞了另乙個修改的結果,比如訂票系統 髒讀 a使用者修改了資料,隨後b使用者又讀出該資料,但a使用者因為某...

事務 事務併發

最近工作非常鬱悶,天天被領導盯著。主要是系統近來死鎖發生在頻率很高。最終,經過大家的共同努力,我們成功的定位並解決了問題,所以把過程中學習的知識與經驗分享一下 問題背景 系統中有乙個賬戶模組,負責管理和維護會員的各種資金及明細,對外的功能涉及資金的增加與扣減等。通過監控系統發現,當外圍系統併發訪問和...