事務的隔離級別

2021-09-12 10:41:50 字數 854 閱讀 2729

事務的隔離級別由低到高的順序:

1、read uncommitted(讀未提交的):最低級別,任何情況都無法保證;

2、read committed(讀已提交的):可避免髒讀的發生;

3、repeatable read(可重複讀):可避免髒讀和不可重複讀的發生;

4、serializable(序列化):可避免髒讀、幻讀、不可重複讀的發生;

髒讀:乙個事務讀取了另個事務沒有提交的資料。

不可重複讀:在乙個事務內多次查詢同乙個資料,返回結果不一樣,讀取到了另乙個事務修改提交的資料。

幻讀:乙個事物內讀取了別的事務插入的資料,導致查詢的資料整體前後不一樣。

mysql支援的事務隔離級別:以上四種都支援,預設事務隔離級別是repeatable read:

oracle支援的事務隔離級別:read committed和serializable,還有唯讀模式,唯讀事務只能看到事務執行前就已經提交的資料,且事務中不能執行 insert , update ,及 delete 語句。其中預設的事務隔離級別是read committed。

由於事務隔離級別越高,導致資料庫執行效率低,資料庫併發就會受到影響,可以用加鎖來實現資料庫的併發,當事務在對某個資料進行事務操作前,現象系統申請請求對該資料進行加鎖,加鎖之後次事務就對該資料具有一定的控制權,直到該事物釋放了鎖,其他事務才能對其資料進行新的操作。

oracle的資料庫鎖分為:

dml鎖:用於保護資料的完整性;

ddl鎖:用於保護資料庫物件的結構,比如表和索引等結構的定義。

資料庫鎖的機制:

s鎖:對資料加了s鎖,其他事務可以讀取該資料,但是不能修改。

x鎖:對資料加了該排他鎖後,其他事務不能對該資料進行讀取和修改。

事務的隔離級別舉例 事務的隔離級別

乙個事務是乙個完整的業務邏輯單元,不能再分,要麼全部執行成功,要麼全部失敗。比如 a給b轉賬100元,a的銀行卡就會少100元,b的銀行卡就會多100元,整個過程要麼全部執行成功,要麼全部失敗。a 原子性。事務是最小的業務邏輯單元。b 一致性。乙個事務必須保證多條dml語句同時成功或失敗。c 隔離性...

事務的隔離級別舉例 JDBC 事務隔離級別

本文總結了 jdbc 事務隔離級別。事務隔離級別定義了在乙個事務中,哪些資料是對當前執行的語句 可見 的。在併發訪問資料庫時,事務隔離級別定義了多個事務之間對於同個目標資料來源訪問時的可交叉程度。可交叉程度可分為以下幾類。可交叉程度 dirty reads 髒讀 當乙個事務能看見另外乙個事務未提交的...

事務的隔離級別舉例 JDBC事務隔離級別

一組要麼同時執行成功,要麼同時執行失敗的sql語句。是資料庫操作的乙個執行單元。斷開與資料庫的連線 表示乙個事務內的所有操作是乙個整體,要麼全部成功,要麼全部失敗 表示乙個事務內有乙個操作失敗時,所有的更改過的資料都必須回滾到修改前狀態 事務檢視資料時資料所處的狀態,要麼是另一併發事務修改它之前的狀...