1. 未提交讀
2. 提交讀 rc : 不可避免 【幻讀】
3. 可重複讀 rr : 讀的資料存在快照中;臨鍵鎖(+意向/排他),來避免 幻讀
4. 序列化
髒讀: rc的情況下, 有資料修改,2次讀取的結果不一致
幻讀: rc 情況下, 有新資料 插入, 2次讀取結果不一致
a.為了解決幻讀問題,innodb引入了gap鎖。
在事務a執行:update msg set message=『訂單』 where token=『asd』;
innodb首先會和rc級別一樣,給索引上的記錄新增上x鎖,此外,還在非唯一索引』asd』與相鄰兩個索引的區間加上鎖。
這樣,當事務b在執行insert into msg values (null,『asd',』hello』); commit;時,會首先檢查這個區間是否被鎖上,如果被鎖上,則不能立即執行,需要等待該gap鎖被釋放。這樣就能避免幻讀問題。
b. 意向鎖的作用就是協調行鎖和表鎖之間的關係的,是將行鎖從另乙個角度提高到了表鎖的等級(偽表鎖),與表鎖進行判斷。
注意:select語句不是加鎖!!!
Spring事務隔離等級
首先了解事務訪問資料庫讀取資料會出現的情況 1 髒讀 dirty reads 事務a的未提交 還依然快取 的資料被事務b讀走,此時事務a提交失敗,資料回滾,會導致事務b所讀取的的資料是快取中的錯誤資料。2 不可重複讀 non repeatable reads 在a事務內,多次讀同一資料。a事務還沒有...
mysql成績變等級 MySQL事務隔離級別
一 四種隔離級別 read uncommitted 讀取未提交內容 在該隔離級別,所有事務都可以看到其他未提交事務的執行結果。本隔離級別很少用於實際應用,因為它的效能也不比其他級別好多少。讀取未提交的資料,也被稱之為髒讀 dirty read read committed 讀取提交內容 sql se...
SpringBoot設定事務隔離等級
spring boot 使用事務非常簡單,首先使用註解 enabletransactionmanagement 開啟事務支援後,然後在訪問資料庫的service方法上新增註解 transactional 便可。在下文中會有圖例 關於事務管理器,不管是jpa還是jdbc等都實現自介面 platform...