read uncommitted:讀未提交
read commited:讀已提交(oracle的預設事務隔離級別)
repeatable read:可重複讀(mysql預設的事務隔離級別)
serializable:序列化
注意:這四個隔離級別安全性一次遞增,但是效率是一次遞減的。
隔離級別對應的情況:
隔離級別/問題
髒讀(dirty read)
不可重複讀(unrepeatable read)
幻讀(phanton read)
read uncommitted
可能可能
可能read commited
不可能可能
可能repeatable read
不可能不可能
可能serializable
不可能不可能
不可能髒讀(dirty read):髒讀又稱無效資料的讀出,是指在資料庫訪問中,事務t1將某一值修改,然後事務t2讀取該值,此後t1因為某種原因撤銷對該值的修改,這就導致了t2所讀取到的資料是無效的。
不可重複讀(unrepeatable read):在乙個事務內,多次讀同乙個資料。在這個事務還沒有結束時,另乙個事務也訪問該同一資料。那麼,在第乙個事務的兩次讀資料之間。由於第二個事務的修改,那麼第乙個事務讀到的資料可能不一樣,這樣就發生了在乙個事務內兩次讀到的資料是不一樣的,因此稱為不可重複讀,即原始讀取不可重複。
幻讀(phanton read):幻讀是指當事務不是獨立執行時發生的一種現象,例如第乙個事務對乙個表中的資料進行了修改,比如這種修改涉及到表中的「全部資料行」。同時,第二個事務也修改這個表中的資料,這種修改是向表中插入「一行新資料」。那麼,以後就會發生操作第乙個事務的使用者發現表中還存在沒有修改的資料行,就好象發生了幻覺一樣.一般解決幻讀的方法是增加範圍鎖ranges,鎖定檢索範圍為唯讀,這樣就避免了幻讀。
mysql查詢隔離級別:select @@transaction_isolation;
mysql設定隔離級別:set global transaction isolation level 級別字串;
事務的隔離級別舉例 事務的隔離級別
乙個事務是乙個完整的業務邏輯單元,不能再分,要麼全部執行成功,要麼全部失敗。比如 a給b轉賬100元,a的銀行卡就會少100元,b的銀行卡就會多100元,整個過程要麼全部執行成功,要麼全部失敗。a 原子性。事務是最小的業務邏輯單元。b 一致性。乙個事務必須保證多條dml語句同時成功或失敗。c 隔離性...
事務的隔離級別舉例 JDBC 事務隔離級別
本文總結了 jdbc 事務隔離級別。事務隔離級別定義了在乙個事務中,哪些資料是對當前執行的語句 可見 的。在併發訪問資料庫時,事務隔離級別定義了多個事務之間對於同個目標資料來源訪問時的可交叉程度。可交叉程度可分為以下幾類。可交叉程度 dirty reads 髒讀 當乙個事務能看見另外乙個事務未提交的...
事務的隔離級別舉例 JDBC事務隔離級別
一組要麼同時執行成功,要麼同時執行失敗的sql語句。是資料庫操作的乙個執行單元。斷開與資料庫的連線 表示乙個事務內的所有操作是乙個整體,要麼全部成功,要麼全部失敗 表示乙個事務內有乙個操作失敗時,所有的更改過的資料都必須回滾到修改前狀態 事務檢視資料時資料所處的狀態,要麼是另一併發事務修改它之前的狀...