事務有四個屬性,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 ...