最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL事務(wù)與隔離級別的使用基礎(chǔ)理論

 更新時間:2023年02月20日 10:26:21   作者:綠仔牛奶_  
這篇文章主要介紹了MySQL事務(wù)的隔離級別詳情,事務(wù)隔離級別越高,為避免沖突所花費(fèi)的性能也就越多,即效率低。在“可重復(fù)讀”級別,實(shí)際上可以解決部分的虛讀問題,但是不能防止update更新產(chǎn)生的虛讀問題,要禁止虛讀產(chǎn)生,還是需要設(shè)置串行化隔離級別

什么是事務(wù)

事務(wù)就是一組操作的集合,事務(wù)將整組操作作為一個整體,共同提交或者共同撤銷

這些操作只能同時成功或者同時失敗,成功即可提交事務(wù),失敗就執(zhí)行事務(wù)回滾

MySQL的事務(wù)默認(rèn)是自動提交的,一條語句執(zhí)行成功,MySQL將會隱式的提交事務(wù)

以轉(zhuǎn)賬為例,張三向李四轉(zhuǎn)賬1000元

這個整體行為包含三個操作:首先查詢張三賬戶的余額,其次將張三賬戶余額-1000,最后將李四賬戶余額+1000。事務(wù)就是將這三個操作看作最小提交單元,就是一榮俱榮一損俱損。

-- 查看事務(wù)管理狀態(tài)  1-自動  0-手動
select @@autocommit;
-- 設(shè)置事務(wù)手動管理
set @@autocommit = 0;
-- 開啟事務(wù)
start transaction;
-- 開啟事務(wù):start transaction 或者 begin
select money from account where name = '張三';
update account set money = money - 1000 where name = '張三';
update account set money = money + 1000 where name = '李四';
-- 事務(wù)提交
commit;
-- 事務(wù)回滾
rollback;

事務(wù)四大特性ACID

原子性Atomicity:一組操作為最小執(zhí)行單元,只能全部執(zhí)行成功或者全部失敗

一致性Consistency:事務(wù)完成后,所有數(shù)據(jù)都要保持一致狀態(tài)

一致性表示事務(wù)完成后,數(shù)據(jù)操作前后符合邏輯運(yùn)算,狀態(tài)一致

隔離性Isolation:是指在并發(fā)操作數(shù)據(jù)庫時,各個事務(wù)之間不會相互影響

持久性Durability:事務(wù)一旦提交或回滾,對于數(shù)據(jù)庫的修改將會永久保存

并發(fā)事務(wù)問題

臟讀

兩個事務(wù)A和B在并發(fā)下操作數(shù)據(jù)庫中的同一數(shù)據(jù)時,當(dāng)事務(wù)A對數(shù)據(jù)進(jìn)行了修改但是還沒有commit的同時,事務(wù)B對該數(shù)據(jù)進(jìn)行了select,此時事務(wù)B讀取到的數(shù)據(jù)就是不準(zhǔn)確的。這種情況叫做臟讀

事務(wù)B讀取到了事務(wù)A修改但還未提交的數(shù)據(jù)---->臟讀

不可重復(fù)讀

同樣事務(wù)AB并發(fā)下操作數(shù)據(jù)庫中同一數(shù)據(jù),首先事務(wù)A對該數(shù)據(jù)進(jìn)行查詢,查詢之后又進(jìn)行了其他操作。與此同時,事務(wù)B執(zhí)行了更新操作并且成功commit。那么當(dāng)事務(wù)A再次對數(shù)據(jù)庫查詢的時候就會出現(xiàn)與上次讀取到的數(shù)據(jù)不一致的情況

幻讀

事務(wù)AB并發(fā)下操作數(shù)據(jù)庫中同一數(shù)據(jù),事務(wù)A首先查詢了數(shù)據(jù)庫中是否有id=1的數(shù)據(jù),沒有就插入。那么此時事務(wù)A未查詢到該數(shù)據(jù)存在,同時事務(wù)B執(zhí)行了插入操作插入了id=1的數(shù)據(jù)并且提交。那么事務(wù)A再去插入的時候則會報主鍵沖突的錯誤,但是當(dāng)事務(wù)A再一次去查的時候發(fā)現(xiàn)id=1的數(shù)據(jù)仍然是不存在( 前提是已經(jīng)解決了不可重復(fù)讀的問題,一個事務(wù)多次訪問同一數(shù)據(jù)的結(jié)果是一致的 ),這種情況就稱之為幻讀

事務(wù)隔離級別

隔離級別

隔離級別臟讀不可重復(fù)讀幻讀
Read uncommitted(讀未提交)×××
Read committed(oracle默認(rèn))(讀已提交)××
Repeatable Read(mysql默認(rèn))(可重復(fù)讀)×
Serializable(可序化)

× --> 無法解決 √ --> 可以解決

在sql中查看當(dāng)前事務(wù)隔離級別

select @@transaction_isolation;

設(shè)置當(dāng)前事務(wù)隔離級別

-- 設(shè)置事務(wù)隔離級別
set [session|global] transaction isolation level {Read uncommitted | Read committed | Repeatable Read |Serializable};

session是指盡在當(dāng)前會話中使用該事務(wù)隔離級別,global表示全局有效

四種事務(wù)隔離級別當(dāng)中,Serializable可序化級別最高。要求序列化執(zhí)行sql指令,事務(wù)只能一個接一個的執(zhí)行,不允許并發(fā)執(zhí)行。性能低下

而Read Uncommitted讀未提交性能最好,但是存在臟讀問題等

到此這篇關(guān)于MySQL事務(wù)與隔離級別的使用基礎(chǔ)理論的文章就介紹到這了,更多相關(guān)MySQL事務(wù)與隔離級別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL示例DTID主從原理解析

    MySQL示例DTID主從原理解析

    這篇文章主要介紹了MySQL示例DTID主從原理解析,其實(shí)包含了詳細(xì)的使用方法說明,有需要的朋友可以借鑒參考下,希望可以有所幫助,感謝閱讀
    2021-09-09
  • 詳解Mysql order by與limit混用陷阱

    詳解Mysql order by與limit混用陷阱

    這篇文章主要介紹了詳解Mysql order by與limit混用陷阱,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Windows下MySQL主從復(fù)制的配置方法

    Windows下MySQL主從復(fù)制的配置方法

    MySQL主從復(fù)制允許將來自一個數(shù)據(jù)庫(主數(shù)據(jù)庫)的數(shù)據(jù)復(fù)制到一個或多個數(shù)據(jù)庫(從數(shù)據(jù)庫),主數(shù)據(jù)庫一般是實(shí)時的業(yè)務(wù)數(shù)據(jù)寫入和更新操作,從數(shù)據(jù)庫常用的讀取為主
    2020-04-04
  • mysql 字段as詳解及實(shí)例代碼

    mysql 字段as詳解及實(shí)例代碼

    這篇文章主要介紹了mysql 字段as詳解,并附實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Windows版mysql?8.0.28?安裝配置方法圖文教程

    Windows版mysql?8.0.28?安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows版mysql?8.0.28?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • mysql查詢條件not in 和 in的區(qū)別及原因說明

    mysql查詢條件not in 和 in的區(qū)別及原因說明

    這篇文章主要介紹了mysql查詢條件not in 和 in的區(qū)別及原因說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 深入理解Mysql中的MVCC

    深入理解Mysql中的MVCC

    這篇文章主要介紹了深入理解Mysql中的MVCC,同樣的sql查詢語句在一個事務(wù)?里多次執(zhí)行查詢結(jié)果相同,就算其它事務(wù)對數(shù)據(jù)有修改也不會影響當(dāng)前事務(wù)sql語句的查詢結(jié)果,?這個隔離性就是靠MVCC機(jī)制來保證的,需要的朋友可以參考下
    2023-09-09
  • mysql中GROUP_CONCAT函數(shù)使用技巧及問題詳解

    mysql中GROUP_CONCAT函數(shù)使用技巧及問題詳解

    這篇文章主要給大家介紹了關(guān)于mysql中GROUP_CONCAT函數(shù)使用技巧及問題的相關(guān)資料,GROUP_CONCAT是MySQL中的一個聚合函數(shù),它用于將多行數(shù)據(jù)按照指定的順序連接成一個字符串并返回結(jié)果,需要的朋友可以參考下
    2023-11-11
  • MySQL 數(shù)據(jù)類型之字符串、數(shù)字、日期詳解

    MySQL 數(shù)據(jù)類型之字符串、數(shù)字、日期詳解

    MySQL 提供了多種數(shù)據(jù)類型,每種類型都有其適用場景,合理選擇數(shù)據(jù)類型可以提升存儲效率、優(yōu)化查詢性能,并避免精度損失,這篇文章主要介紹了MySQL數(shù)據(jù)類型詳解:字符串、數(shù)字、日期,需要的朋友可以參考下
    2025-04-04
  • mysql分組取每組前幾條記錄(排名) 附group by與order by的研究

    mysql分組取每組前幾條記錄(排名) 附group by與order by的研究

    mysql分組取每組前幾條記錄(排名) 附group by與order by的研究,需要的朋友可以參考下
    2012-10-10

最新評論

海晏县| 牟定县| 通渭县| 赤水市| 秭归县| 虹口区| 张家界市| 灌阳县| 四平市| 阿图什市| 晋城| 禄劝| 兴安县| 阿尔山市| 盱眙县| 涟水县| 左云县| 东兴市| 会同县| 余干县| 务川| 安陆市| 丹凤县| 洞头县| 慈利县| 平和县| 浦江县| 洮南市| 涞水县| 潜山县| 绥棱县| 千阳县| 司法| 武宁县| 克山县| 新平| 安西县| 德清县| 集安市| 伊宁县| 汉寿县|