事務隔離級別的個人理解

2021-08-17 05:47:47 字數 720 閱讀 7934

事務隔離級別是指若干個併發的事務之間的隔離程度。

1.read uncommitted 讀未提交,可能出現髒讀、不可從復讀、幻讀

髒讀相對於其他事務(b)來說 本事務(a)做了修改,髒讀是讀到了錯誤資料

a修改 b讀取

a-start a update b-start b read b-end a rollback or update a-end 

2.read committed 讀已提交,可能出現不可重複讀、幻讀,大多數資料庫預設級別(sql server oracle)

不可重複讀相對於本事務(a)來說 其他事務(b)做了修改,不可重複讀就是讀到了被修改了的資料,即兩次讀的資料不一樣

a修改 b修改

a-start a read b-start b update b-end a-update(此時資料已經不一致了) a-end

3.repeatable read 重複讀,可能出現幻讀,mysql預設級別

幻讀相對於本事務(a)來說 其他事務(b)做了插入,幻讀就是讀到了新插入的資料,有可能會產生漏改現象

a讀取/修改 b插入/刪除

a-start a read b-start a-end b-insert b-end a-start a read(此時發現有沒見過的,就像出現幻覺了) a-end

4.serializable 序列化,事務順序執行,效能低

以上如有偏差,還望指正。

參照部落格:

事務隔離級別的理解

資料庫事務的隔離級別有4種,由低到高分別為read uncommitted read committed repeatable read serializable 而且,在事務的併發操作中可能會出現髒讀,不可重複讀,幻讀。下面通過事例一一闡述它們的概念與聯絡。read uncommitted 讀未提...

對SQL事務隔離級別的簡單理解

資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式 更加可靠。乙個邏輯工作單元要...

Mysql隔離級別的理解

1 read uncommitted 讀取未提交 查詢時可以查詢到沒有提交的資料,導致髒讀 2 read committed 讀取提交內容 前一次查詢和後一次查詢中資料間有被增刪改,導致查詢資料不一致,導致不可重複讀,但不能讀取到未提交的資料 3 repeatable read 可重複讀 會導致幻讀...