国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL四種事務隔離級別詳解

2024-07-24 12:51:38
字體:
來源:轉載
供稿:網友

本文實驗的測試環境:Windows 10+cmd+MySQL5.6.36+InnoDB

一、事務的基本要素(ACID)

  1、原子性(Atomicity):事務開始后所有操作,要么全部做完,要么全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是一個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。

   2、一致性(Consistency):事務開始前和結束后,數據庫的完整性約束沒有被破壞 。比如A向B轉賬,不可能A扣了錢,B卻沒收到。

   3、隔離性(Isolation):同一時間,只允許一個事務請求同一數據,不同的事務之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結束前,B不能向這張卡轉賬。

   4、持久性(Durability):事務完成后,事務對數據庫的所有更新將被保存到數據庫,不能回滾。

  小結:原子性是事務隔離的基礎,隔離性和持久性是手段,最終目的是為了保持數據的一致性。

二、事務的并發問題

  1、臟讀:事務A讀取了事務B更新的數據,然后B回滾操作,那么A讀取到的數據是臟數據

  2、不可重復讀:事務 A 多次讀取同一數據,事務 B 在事務A多次讀取的過程中,對數據作了更新并提交,導致事務A多次讀取同一數據時,結果 不一致。

  3、幻讀:系統管理員A將數據庫中所有學生的成績從具體分數改為ABCDE等級,但是系統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束后發現還有一條記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。

  小結:不可重復讀的和幻讀很容易混淆,不可重復讀側重于修改,幻讀側重于新增或刪除。解決不可重復讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表

三、MySQL事務隔離級別

mysql默認的事務隔離級別為repeatable-read

四、用例子說明各個隔離級別的情況

1、讀未提交:

(1)打開一個客戶端A,并設置當前事務模式為read uncommitted(未提交讀),查詢表account的初始值:

(2)在客戶端A的事務提交之前,打開另一個客戶端B,更新表account:

(3)這時,雖然客戶端B的事務還沒提交,但是客戶端A就可以查詢到B已經更新的數據:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峻县| 辰溪县| 游戏| 黎川县| 无极县| 花莲市| 玉树县| 射阳县| 赤城县| 闵行区| 丹江口市| 宁晋县| 通化市| 寻乌县| 北京市| 克东县| 丰城市| 永济市| 佛学| 湘乡市| 乐昌市| 临江市| 盐城市| 西安市| 神农架林区| 门头沟区| 黎川县| 双桥区| 长岛县| 合阳县| 苏尼特左旗| 安达市| 滨州市| 上思县| 米脂县| 手机| 封丘县| 凌海市| 林州市| 中山市| 斗六市|