資料庫隔離級別

2021-08-21 06:51:20 字數 1395 閱讀 2571

未提交讀(隔離事務的最低級別,只能保證不讀取物理上損壞的資料)

已提交讀(資料庫引擎的預設級別)

可重複讀

可序列化(隔離事務的最高端別,事務之間完全隔離)

可序列化比較嚴謹,級別高;

mysql

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

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 'serializable'

end as isolation_level

from v$transaction t

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

sql server

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

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

dbcc useroptions 

isolation level 這一項的 value 既是當前的隔離級別設定值

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

set transaction isolation level read uncommitted;

其中read uncommitted為需要設定的值

資料庫隔離級別

read uncommited 讀未提交 最低級別,可讀取未提交事物的資料,這會導致髒讀,比如 某時刻會話a修改了乙個資料,但還未提交,此時會話b,讀取了該資料,這是,會話a回滾了事物,這就導致資料出現了不一致狀態,這就是髒讀 read commited 提交讀 避免了髒讀,但會導致不可重複讀,例如...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀 不可重複讀 幻讀read uncommitted re...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...