欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql、oracle默認事務隔離級別的說明

 更新時間:2021年01月18日 17:08:35   作者:劍海風云  
這篇文章主要介紹了mysql、oracle默認事務隔離級別的說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1.事務的特性(ACID)

(1)原子性(Atomicity)。事務中所涉及的程序對數據庫的修改操作要么全部成功,要么全部失敗。

(2)一致性(Consistency)。事務執(zhí)行前和執(zhí)行后來源和去向保持平衡。

(3)隔離性(Isolation)。并發(fā)時每個事務是隔離的,相互不影響。

(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.查看系統默認事務隔離級別,也是當前會話隔離級別

--首先創(chuàng)建一個事務

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鎖和事務隔離級別

隔離級別

隔離級別 臟讀 不可重復讀 幻象 說明
未提交讀(read uncommitted) 如果其他事務更新,不管是否提交,立即執(zhí)行
提交讀(read committed默認) 讀取提交過的數據。如果其他事務更新沒提交,則等待
可重復讀(repeatable read) 查詢期間,不允許其他事務update
可串行讀(serializable) 查詢期間,不允許其他事務insert或delete
請求模式 IS S U IX SIX X
意向共享(IS)
共享(S)
更新(U)
意向排它(IX)
與意向排它共享(SIX)
排它(X)

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

排他鎖:只能有一個,其他的事務就不能對鎖定的數據獲取共享鎖和排他鎖(即排他鎖與共享鎖不能兼容,更多信息請查看鎖兼容性),在此特別強調一下 鎖定的數據。

鎖與隔離級別

類型1

① READUNCOMMITTED:不發(fā)出鎖

② READCOMMITTED:發(fā)出共享鎖,保持到讀取結束

③ REPEATABLEREAD:發(fā)出共享鎖,保持到事務結束

④ SERIALIZABLE:發(fā)出共享鎖,保持到事務結束

類型2

① NOLOCK:不發(fā)出鎖。等同于READUNCOMMITTED

② HOLDLOCK:發(fā)出共享鎖,保持到事務結束。等同于SERIALIZABLE

③ XLOCK:發(fā)出排他鎖,保持到事務結束。

④ UPDLOCK:發(fā)出更新鎖,保持到事務事務結束。(更新鎖:不阻塞別的事物,允許別的事物讀數據(即更新鎖可與共享鎖兼容),但他確保自上次讀取數據后數據沒有被更新)

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

類型3

① ROWLOCK:行級鎖

② PAGLOCK:頁級鎖

③ TABLOCK:表鎖

④ TABLOCKX:表排他鎖

在SELECT語句中使用XLOCK并不能阻止讀。這是因為SQL SERVER在讀提交隔離級別上有一種特殊的優(yōu)化,即檢查行是否已被修改,如果未被修改則忽略XLOCK。因為在讀提交隔離級別上這確實是可以接受的。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • mysql多版本并發(fā)控制MVCC的實現

    mysql多版本并發(fā)控制MVCC的實現

    這篇文章主要介紹了mysql多版本并發(fā)控制MVCC的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • MySQL登錄、訪問及退出操作實戰(zhàn)指南

    MySQL登錄、訪問及退出操作實戰(zhàn)指南

    當我們要使用mysql時,一定要了解mysql的登錄、訪問及退出,下面這篇文章主要給大家介紹了關于MySQL登錄、訪問及退出操作的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • Mysql通過存儲過程分割字符串為數組

    Mysql通過存儲過程分割字符串為數組

    今天小編就為大家分享一篇關于Mysql通過存儲過程分割字符串為數組,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mysql大小寫敏感導致程序無法啟動的問題

    mysql大小寫敏感導致程序無法啟動的問題

    這篇文章主要介紹了mysql大小寫敏感導致程序無法啟動的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • MySQL之同表一個字段如何賦值給另一個字段

    MySQL之同表一個字段如何賦值給另一個字段

    這篇文章主要介紹了MySQL之同表一個字段如何賦值給另一個字段問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • iOS開發(fā)runloop運行循環(huán)機制學習

    iOS開發(fā)runloop運行循環(huán)機制學習

    這篇文章主要為大家介紹了iOS開發(fā)runloop運行循環(huán)的機制學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • MySQL優(yōu)化之如何查找SQL效率低的原因

    MySQL優(yōu)化之如何查找SQL效率低的原因

    這篇文章主要介紹了MySQL優(yōu)化之如何查找SQL效率低的原因 ,需要的朋友可以參考下
    2014-05-05
  • mysql 8.0.20 安裝配置詳細教程

    mysql 8.0.20 安裝配置詳細教程

    這篇文章主要為大家詳細介紹了mysql 8.0.20 安裝配置詳細教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 關于MySQL死鎖問題的深入分析

    關于MySQL死鎖問題的深入分析

    這篇文章主要給大家介紹了關于MySQL死鎖問題的深入分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • MySQL Binlog 日志處理工具對比分析

    MySQL Binlog 日志處理工具對比分析

    這篇文章主要介紹了MySQL Binlog 日志處理工具對比分析的相關資料,幫助大家更好的理解和學習使用MySQL數據庫,感興趣的朋友可以了解下
    2021-03-03

最新評論