日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

必须懂的 MySQL 的事务与隔离级别

發布時間:2025/3/20 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 必须懂的 MySQL 的事务与隔离级别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??點擊上方?好好學java?,選擇?星標?公眾號

重磅資訊、干貨,第一時間送達 今日推薦:微信支付的軟件架構,牛逼!個人原創+1博客:點擊前往,查看更多 出處:哈基石 鏈接:https://segmentfault.com/a/1190000022610363

事務的特性 ACID

  • 原子性(atomicity) 一個事務為不可分割的最小工作單元,要么全部提交成功,要么全部回滾,不可能只執行一部分,這就是事務的原子性

  • 一致性(consistency) 數據庫從一個一致性狀態切換到另一個一致性狀態

  • 隔離性(isolation) 一個事務在提交之前,對其他事務是不可見的。

  • 永久性(durability) 一旦事務提交,那么所做的修改將會永久存儲在數據庫中

事務的隔離級別

READ UNCOMMITED(未提交讀)臟讀

事務中的修改即使沒有提交,對其他事務都是可見的。會出現臟讀(Dirty Read)的情況。

READ COMMITTED (提交讀)不可重復讀

一個事務從開始直到提交之前,所做的任何修改對其他事務都是不可見的。也叫做不可重復讀(nonrepeatable read),因為兩次同樣的查詢,可能會存在不同的結果舉例說明:比如事務A正在讀數據庫內容,而事務 B 修改了數據后提交了。此時事務A又讀了一次數據庫內容,這時出現兩個內容不同的結果,稱為不可重復讀。

REPEATABLE READ(可重復讀)幻讀 MySQL 默認的事務隔離級別

當某個事務在讀取某個范圍內的記錄時,另外一個事務在這個范圍內插入了新的記錄,當之前的事務再次讀取這個范圍內的數據時,會產生幻行(Phantom Row)稱為幻讀舉例說明:比如事務 A 正在讀數據庫內容,而事務 B 插入一條到數據庫后提交了。此時事務 A 又讀了一次數據庫內容,這時數據庫現了多一條數據稱為幻讀

SERIALIZABLE (可串行化)最高的隔離級別

在讀取的每一行數據都上鎖。導致導量的超時和等待鎖的問題。

隔離級別臟讀不可重復度幻讀加鎖讀
未提交讀x
提交讀xx
可重復讀xxx
可串行化xxx

選擇哪種模式其實是一種博弈的過程,數據庫的事務隔離越嚴格,并發副作用越小,但付出的代價也就越大,因為事務隔離實質上就是使事務在一定程度上“串行化”進行,這顯然與“并發”是矛盾的。


自動提交(AUTOCOMMIT)

MySQL 默認采用自動提交(AUTOCOMMIT)模式。如果不顯式地開始一個事務,則每個事務都被當做一個事務進行提交操作。MyISAM 在執行查詢語句(select)前,會自動給涉及的所有表加讀鎖,在執行更新操作(update、delete、insert等)前,會自動給涉及的表加寫鎖,這個過程并不需要直接用 lock table 命令給 MyISAM 表顯示加鎖。MyISAM 在自動加鎖的情況下,總是一次獲得 sql 語句所需要的全部鎖,所以顯示鎖表的時候,必須同時取得所有涉及表的鎖,這也正是 MyISAM 表不會出現死鎖(deadlock)的原因。

查看自動提交模式類型show variables like 'autocommit'

設置自動提交模式set autocommit = 1在事務的執行過程中,隨時都可以執行鎖定,鎖只有 COMMIT 或 ROLLBACK 才會釋放

MySQL 可以使用 SET TRANSACTION ISOLATION LEVEL 命令設置隔離級別

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

死鎖

死鎖是指兩個或者多個事務在同一個資源上互相占用,并請求鎖定對方占用的資源,從而出現惡性循環的現象。

死鎖產生的原因

  • 因為系統資源不足。

  • 進程運行推進的順序不合適。

  • 資源分配不當等。

  • 如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則 就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可能產生死鎖。

    死鎖產生的條件

  • 互斥條件:一個資源每次只能被一個進程使用。

  • 占有且等待:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。

  • 不可強行占有:進程已獲得的資源,在末使用完之前,不能強行剝奪。

  • 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立。

  • 死鎖的預防

  • 破幻死鎖產生的必要條件

  • 檢測到死鎖的循環依賴,放棄鎖的請求

  • 等待鎖超市,放棄鎖

  • 樂觀鎖

    樂觀鎖(Optimistic Lock),顧名思義,就是很樂觀,每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在提交更新的時候會判斷一下在此期間別人有沒有去更新這個數據。樂觀鎖適用于讀多寫少的應用場景,這樣可以提高吞吐量。

    樂觀鎖:假設不會發生并發沖突,只在提交操作時檢查是否違反數據完整性。

    樂觀鎖的實現方式

  • 使用數據版本(Version)記錄機制實現,這是樂觀鎖最常用的一種實現方式。何謂數據版本?即為數據增加一個版本標識,一般是通過為數據庫表增加一個數字類型的 “version” 字段來實現。當讀取數據時,將version字段的值一同讀出,數據每更新一次,對此version值加一。當我們提交更新的時候,判斷數據庫表對應記錄的當前版本信息與第一次取出來的version值進行比對,如果數據庫表當前版本號與第一次取出來的version值相等,則予以更新,否則認為是過期數據。

  • 使用時間戳(timestamp)。樂觀鎖定的第二種實現方式和第一種差不多,同樣是在需要樂觀鎖控制的table中增加一個字段,名稱無所謂,字段類型使用時間戳(timestamp), 和上面的version類似,也是在更新提交的時候檢查當前數據庫中數據的時間戳和自己更新前取到的時間戳進行對比,如果一致則OK,否則就是版本沖突。

  • 應用場景樂觀鎖適用于寫比較少的情況下(多讀場景) ,這樣可以省去了鎖的開銷,加大了系統的整個吞吐量。

    悲觀鎖

    悲觀鎖(Pessimistic Lock),顧名思義,就是很悲觀,每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。

    悲觀鎖:假定會發生并發沖突,屏蔽一切可能違反數據完整性的操作。

    應用場景一般多寫的場景下用悲觀鎖就比較合適

    最后,再附上我歷時三個月總結的?Java 面試 + Java 后端技術學習指南,這是本人這幾年及春招的總結,目前,已經拿到了大廠offer,拿去不謝!

    下載方式

    1.?首先掃描下方二維碼

    2.?后臺回復「Java面試」即可獲取

    總結

    以上是生活随笔為你收集整理的必须懂的 MySQL 的事务与隔离级别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 僵尸叔叔在线观看国语高清免费观看 | 蜜臀麻豆 | 日本无遮挡边做边爱边摸 | 欧美性爱视频久久 | 一区二区三区不卡视频在线观看 | 色一情| 中文字幕日产乱码中 | 欧美国产精品一二三 | 成人精品在线观看视频 | 日韩天堂在线 | 亚洲精品粉嫩小泬 | 国产免费一区二区三区在线观看 | 国产精品伦一区二区三级视频 | 亚洲欧美日韩国产一区二区三区 | 免费av影视 | 欧美日韩精品亚洲精品 | 99视频网 | 在线午夜| 东京热毛片 | 白丝女仆被免费网站 | 性生活毛片| 蜜桃无码一区二区三区 | 日本xxx在线观看 | 精品久久999| 成人在线视频免费观看 | 亚洲老女人 | 亚洲午夜色 | 成年人视频网址 | 久久第一页 | 国产高清视频免费在线观看 | 国产又粗又硬又黄的视频 | 色吧av| 久久久久久国产精品三级玉女聊斋 | 亚洲精品乱码久久久久久日本蜜臀 | 亚洲天堂中文 | 欧美 亚洲 视频 | 日韩一级片免费观看 | jizz亚洲女人 | 国模吧无码一区二区三区 | 性淫影院 | 国产成人精品电影 | 黄色一级在线观看 | 综合爱爱网 | 国产传媒在线 | 亚洲人天堂 | 国产精品第十页 | 久久久久五月天 | 亚洲av无码久久精品色欲 | 欧美另类69 | 黄色免费在线观看网站 | 亚洲熟妇无码另类久久久 | 色综合色综合色综合 | 欧美成人激情 | 蜜美杏av| 四季av一区二区三区免费观看 | 91成人免费在线观看 | 精品一区二区三区视频 | 日本中文字幕在线观看 | 国产呻吟av| 永久免费看片在线播放 | 美女脱裤子让男人捅 | www伊人| 国产精品一级片在线观看 | 欧美爱爱一区二区 | 91视频在线观看免费 | 性做久久久久久久久久 | 午夜视频免费在线观看 | 国产精品三级久久久久久电影 | 女生和男生一起插插插 | 性视频网址 | 超碰资源| 成人黄色大全 | 林天顾悦瑶笔趣阁 | 国产欧美二区 | 91午夜在线 | 亚洲 激情 小说 另类 欧美 | 久久久久亚洲av无码专区体验 | 免看一级a毛片一片成人不卡 | 亚欧美日韩 | 91av小视频| 国产午夜精品一区二区三区四区 | 久久精品5 | 蜜臀免费av| 免费在线观看www | 欧美做受喷浆在线观看 | 岛国av动作片 | 大吊一区二区三区 | 欧美日韩精品在线观看视频 | 激情全身裸吻胸 | 91av免费观看| 国产精品亚洲一区二区 | 欧美爱爱免费视频 | 欧美视频免费 | 日韩成人精品在线 | 欧美xxx在线观看 | 色老大视频| 日本美女久久 | 日本 片 成人 在线 九色麻豆 | 大肉大捧一进一出好爽视频 |