mysql的事務隔離學習筆記
阿新 • • 發佈:2020-12-08
基本概念
mysql事務是什麼?
事務 就是指一系列的資料庫操作 要麼都成功 要麼都不成功。
事務相關的特性
ACID
原子性- Atomicity
一致性- Consistency
隔離性-Isolation
永續性-Durability
資料庫多個事務同時執行易引發問題
髒讀:讀出了無效資料 比如一個事務讀到另一個事務未提交的資料更改。
不可重複讀:同一個事務中 兩次相同的查詢返回了不同的結果。
幻讀:幻讀指當事務不獨立執行時 插入或刪除另一個事務當前影響的資料而發生的一種類似幻覺的現象。
為了解決這些問題引入的“隔離級別”
讀未提交-read uncommitted:一個事務還沒提交時,它做的更改就能被別的事務看見。
讀提交-read committed: 一個事務提交之後,它做的變更才會被別的事務看到。
可重複讀-repeatable read: 一個事務執行過程中看到的資料,總是和事務啟動時看到的資料是一致的
序列化-serializable: 對於同一行記錄,“寫”會加“寫鎖”,"讀"會加"讀鎖"。當出現讀寫鎖衝突時 後訪問的事務必須等前一個加鎖的事務執行完成,才能繼續執行。
髒讀問題可以設定為讀提交(read committed)隔離級別解決問題
不可重複讀可以設定為 可重複(repeatable read)隔離級別解決問題
幻讀 可以設定為 序列化(serializable)隔離級別解決問題