這篇文章主要介紹了mysql、oracle默認事務隔離級別的說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
1.事務的特性(ACID)
(1)原子性(Atomicity)。事務中所涉及的程序對數據庫的修改操作要么全部成功,要么全部失敗。
(2)一致性(Consistency)。事務執行前和執行后來源和去向保持平衡。
(3)隔離性(Isolation)。并發時每個事務是隔離的,相互不影響。
(4)持久性(Durubility)。一旦事務成功提交,應該保證數據的完整存在。
2.事務隔離級別
(1)read uncommitted 未提交讀
所有事務都可以看到沒有提交事務的數據。
(2)read committed 提交讀
事務成功提交后才可以被查詢到。
(3)repeatable 重復讀
同一個事務多個實例讀取數據時,可能將未提交的記錄查詢出來,而出現幻讀。mysql默認級別
(4)Serializable可串行化
強制的進行排序,在每個讀讀數據行上添加共享鎖。會導致大量超時現象和鎖競爭。
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');
補充:SQLserver鎖和事務隔離級別
隔離級別
鎖
共享鎖:為了共享讀(select),如果存在事務(一個或多個)擁有對表中數據(關于鎖數據的多少,視鎖的粒度而定)的共享鎖,不允許對鎖定的數據進行更新(update)
排他鎖:只能有一個,其他的事務就不能對鎖定的數據獲取共享鎖和排他鎖(即排他鎖與共享鎖不能兼容,更多信息請查看鎖兼容性),在此特別強調一下 鎖定的數據。
鎖與隔離級別
類型1
① READUNCOMMITTED:不發出鎖
② READCOMMITTED:發出共享鎖,保持到讀取結束
③ REPEATABLEREAD:發出共享鎖,保持到事務結束
④ SERIALIZABLE:發出共享鎖,保持到事務結束
類型2
① NOLOCK:不發出鎖。等同于READUNCOMMITTED
② HOLDLOCK:發出共享鎖,保持到事務結束。等同于SERIALIZABLE
③ XLOCK:發出排他鎖,保持到事務結束。
④ UPDLOCK:發出更新鎖,保持到事務事務結束。(更新鎖:不阻塞別的事物,允許別的事物讀數據(即更新鎖可與共享鎖兼容),但他確保自上次讀取數據后數據沒有被更新)
⑤ READPAST:發出共享鎖,但跳過鎖定行,它不會被阻塞。適用條件:提交讀的隔離級別,行級鎖,select語句中。
類型3
① ROWLOCK:行級鎖
② PAGLOCK:頁級鎖
③ TABLOCK:表鎖
④ TABLOCKX:表排他鎖
在SELECT語句中使用XLOCK并不能阻止讀。這是因為SQL SERVER在讀提交隔離級別上有一種特殊的優化,即檢查行是否已被修改,如果未被修改則忽略XLOCK。因為在讀提交隔離級別上這確實是可以接受的。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教
來源:腳本之家
鏈接:https://www.jb51.net/article/204320.htm
申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!