未提交讀(隔離事務的最低級別,只能保證不讀取物理上損壞的數據)
已提交讀(數據庫引擎的默認級別)
可重復讀
可序列化(隔離事務的最高級別,事務之間完全隔離)
可串行化比較嚴謹,級別高;
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為需要設置的值