mysql oracle預設事務隔離級別的說明

2022-09-24 10:33:09 字數 2778 閱讀 4967

(1)原子性(atomicity)。事務中所涉及的程式對資料庫的修改操作要麼全部成功,要麼全部失敗。

(2)一致性(consistency)。事務執行前和執行後**和去向保持平衡。

(3)隔離性(isolatcrzolion)。併發時每個事務是隔離的,相互不影響。

(4)永續性(durubility)。一旦事務成功提交,應該保證資料的完整存在。

(1)read uncommitted 未提交讀

所有事務都可以看到沒有提交事務的資料。

(2)read committed 提交讀

事務成功提交後才可以被查詢到。

(3)repeatable 重複讀

同乙個事務多個例項讀取資料時,可能將未提交的記錄查詢出來,而出現幻讀。mysql預設級別

(4)serializable可序列化

強制的進行排序,在每個讀讀資料行上新增共享鎖。會導致大量超時現象和鎖競爭。

mysql預設的事務處理級別是'repeatable-read',也就是可重複讀

1.檢視當前會話隔離級別

select @@tx_isolation;

2.檢視系統當前隔離級別

select @@global.tx_isolation;

3.設定當前會話隔離級別

set session transaction isolatin level repeatable read;

4.設定系統當前隔離級別

set global transaction isolation level repeatable read;

oracle資料庫支援read committed 和 serializable這兩種事務隔離級別。

預設系統事務隔離級別是read committed,也就是讀已提交

1.檢視系統預設事務隔離級別,也是當前會話隔離級別

--首先建立乙個事務

declare

trans_id varchar2(100);

begin

trans_id := dbms_transaction.local_transaction_id( true );

end;

--檢視事務隔離級別

select s.sid, s.serial#,

case bitand(t.flag, power(2, 28))

when 0 then 'read committed'

else 'serializa程式設計客棧ble'

end as isolation_level

from v$transaction t

join v$session s on t.addr = s.taddr and s.sid = sys_context('userenv', 'sid');

補充:sqlserver鎖和事務隔離級別

隔離級別

髒讀不可重複讀

幻象說明

未提交讀(read uncommitted)是是

是如果其他事務更新,不管是否提交,立即執行

提交讀(read committed預設)否是

是讀取提交過的資料。如果其他事務更新沒提交,則等待

可重複讀(repeatable read)否否

是查詢期間,不允許其他事務update

可序列讀(serializable)否否

否查詢期間,不允許其他事務insert或delete

請求模式iss

uix

sixx

意向共享(is)是是

是是是否

共享(s)是是

是否否否

更新(u)是是

否否否否

意向排它(ix)是否

否是否否

程式設計客棧 與意向排它共享(six)是否

否否否否

排它(x)否否

否否否否

共享鎖:為了共享讀(select),如果存在事務(乙個或多個)擁有對錶中資料(關於鎖資料的多少,視鎖的粒度而定)的共享鎖,不允許對鎖定的資料進行更新(update)

排他鎖:只能有乙個,其他的事務就不能對鎖定的資料獲取共享鎖和排他鎖(即排他鎖與共享鎖不能相容,更多資訊請檢視鎖相容性),在此特別強調一下 鎖定的資料。

型別1① readuncommitted:不發出鎖

② readcommitted:發出共享鎖,保持到讀取結束

③ repeatableread:發出共享鎖,保持到事務結束

④ serializable:發出共享鎖,保持到事務結束

型別2① nolock:不發出鎖。等同於readuncom程式設計客棧mitted

② holdlock:發出共享鎖,保持到事務結束。等同於serializable

③ xlock:發出排他鎖,保持到事務結束。

④ updlock:發出更新鎖,保持到事務事務結束。(更新鎖:不阻塞別的事物,允許別的事物讀資料(即更新鎖可與共享鎖相容),但他確保自上次讀取資料後資料沒有被更新)

⑤ readpast:發出共享鎖,但跳過鎖定行,它不會被阻塞。適用條件:提交讀的隔離級別,行級鎖,select語句中。

型別3① rowlock:行級鎖

② paglock:頁級鎖

③ tablock:表鎖

④ tablockx:表排他鎖

在select語句中使用xlock並不能阻止讀。這是因為sql server在讀提交隔離級別上有一種特殊的優化,即檢查行是否已被修改,如果未被修改則忽略xlock。因為在讀提交隔離級別上這確實是可以接受的。

本文標題: mysql、oracle預設事務隔離級別的說明

本文位址: /shujuku/mysql/374241.html

spring預設事務異常處理

spring宣告式事務管理預設對非檢查型異常和執行時異常進行事務回滾,而對檢查型異常則不進行回滾操作。那麼什麼是檢查型異常什麼又是非檢查型異常呢?1 繼承自runtimeexception或error的是非檢查型異常 2 繼承自exception的則是檢查型異常 runtimeexception本身...

js 預設事件取消

子類的事件會會發父類相同型別的事件,w3c 標準window.event.stoppropagation也是事件物件 event 的乙個方法,作用是阻止目標元素的冒泡事件,但是會不阻止預設行為。ie則是使用window.event.cancelbubble true 2.阻止預設事件 a標籤的跳轉,...

MySQL在預設事務下各SQL語句使用的鎖分析

資料庫使用鎖是為了支援更好的併發,提供資料的完整性和一致性。innodb是乙個支援行鎖的儲存引擎,鎖的型別有 共享鎖 s 排他鎖 x 意向共享 is 意向排他 ix 為了提供更好的併發,innodb提供了非鎖定讀 不需要等待訪問行上的鎖釋放,讀取行的乙個快照。該方法是通過innodb的乙個特性 mv...