事務併發問題和隔離級別

2022-03-09 01:23:42 字數 856 閱讀 9445

事務有四個屬性,acid。

事務併發會造成三個問題:髒讀,不可重複讀,幻讀。

髒讀:事務a讀了事務b更新的資料,然後事務b回滾撤銷了,事務a讀取的資料就是髒讀。

不可重複讀:事務a讀取資料num後,事務b對其修改,事務a再次讀取資料num,前後不一致,這情況為不可重複讀。

幻讀:事務a讀取資料(一張表),事務b對此表新增或刪除記錄,這種情況為幻讀。

不可重複讀和幻讀的區別:乙個針對一條記錄的更新,乙個針對表的更新。因此要解決兩者,分別要用到行鎖和表鎖。這也就造成解決兩者的隔離級別不同。

隔離級別有四個:

read-uncommitted:不能解決髒讀、不可重複讀、幻讀

read-committed:解決髒讀,不能解決不可重複讀、幻讀

repeatable-read:解決髒讀、不可重複讀、幻讀

serializable:解決髒讀、不可重複讀、幻讀

其中mysql的事務隔離級別為reapeatable-read

開啟兩個mysql程序,建立乙個test表,插入簡單的資料,可以在兩個mysql程序都看到表內容。

read-uncommitted

兩個程序mysql都要將隔離級別設定為read-uncommitted。

步驟:程序b的情況

read-committed

步驟:repeatable-read

步驟:serializable

步驟:個人認為,是因為表被鎖了,在等待程序a釋放鎖,然後程序b可以對錶進行修改

在進行相關操作後,對事務的理解更加深刻。關於讀取上版本,mvcc內容需要抽空去學習一下。

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

事務的特性 隔離級別和併發問題 1.事務的特性acid 2.併發訪問問題 由隔離性引起 3.事務的隔離級別 4.總結 概念 1.事務的特性acid 1 原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。2 一致性 consistency 乙個事...

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

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

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

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