Oracle事務隔離級別

2021-09-26 07:01:53 字數 1667 閱讀 7760

髒讀(dirty read):當乙個事務讀取另乙個事務尚未提交的修改時,產生髒讀。

不可重複讀(nonrepeatable read):同一查詢在同一事務中多次進行,在此期間,由於其他事務提交了對資料的修改或刪除,每次返回不同的結果。

幻讀(phantom read):同一查詢在同一事務中多次進行,由於其他提交事務所做的插入操作,雖然查詢條件相同,每次返回的結果集卻不同。

將t2的事務級別設定為 可序列化後:

事務級別:

oracle 事務隔離級別

oracle 支援以下三種事務隔離級別(transaction isolation level)。

隔離級別    描述

已提交讀取    oracle 預設使用的事務隔離級別。事務內執行的查詢只能看到查詢執行前(而非事務開始前)就已經提交的資料。oracle 的查詢永遠不會讀取髒資料(未提交的資料)。

oracle 不會阻止乙個事務修改另一事務中的查詢正在訪問的資料,因此在乙個事務內的兩個查詢的執行間歇期間,資料有可能被其他事務修改。舉例來說,如果乙個事務內同一查詢執行兩次,可能會遇到不可重複讀取或不存在讀取的現象。 

序列化    序列化隔離的事務只能看到事務執行前就已經提交的資料,以及事務內 insert , update ,及 delete 語句對資料的修改。序列化隔離的事務不會出現不可重複讀取或不存在讀取的現象。 

唯讀模式    唯讀事務只能看到事務執行前就已經提交的資料,且事務中不能執行 insert , update ,及 delete 語句。

應用程式的設計開發者及資料庫管理員可以依據應用程式的需求及系統負載(workload)而為不同的事務選擇不同的隔離級別(isolation level)。使用者可以在事務開始時使用以下語句設定事務的隔離級別:

已提交讀模式:set transaction isolation level=read committed;

序列模式:set transaction isolation level= serializable;

唯讀模式:set transaction= read only;

Oracle 事務隔離級別

先看一張concepts中關於事務隔離級別的一張 從上圖可以看到 通常事務的隔離級別定義為以下4種 基於3種在併發事務中需要避免的現象來劃分的 1.read uncommitted 從字面意義可以看出,讀取那些未提交的資料。事務1在事務進行過程中,會讀到事務2修改了但是沒有提交的資料,所以產生了 髒...

Oracle事務隔離級別

一 事務四個性質 acid 1 原子性 atomaicity 乙個事務是乙個不可分割的單元。2 一致性 consistency 事務的原子性保證的事務的一致性。3 隔離性 isolation 三種現象 1 髒讀 即讀出其它事務未提交的資料。2 不可重複讀 乙個事務,兩個不同時間,讀取的資料不同,被他...

oracle事務隔離級別 SERIALIZABLE

serializable 一般認為這是最受限的隔離級別,但是它也提供了最高程度的隔離性。serializable事務在乙個環境中操作時,就好像沒有別的使用者在修改資料庫中的資料一樣。我們讀取的所有行在重新讀取時都肯定完全一樣,所執行的查詢在整個事務期間也總能返回相同的結果。serializable這...