天天看點

mysql 資料庫 事務 四種隔離級别(讀未送出、不可重複讀、可重複讀、串行化) 和并發出現的情況(髒讀、不可重複讀、幻讀)事務的四種特性(原子、一緻、隔離、持久)

目錄

​​介紹​​

​​1.事務四種特性​​

​​1.1原子​​

​​1.2一緻性 ​​

​​1.3隔離性​​

​​1.4持久性​​

​​2.并發可能會出現的情況​​

​​2.1髒讀​​

​​2.2不可重複讀​​

​​2.3幻讀​​

​​總結重點​​

​​3.事務的四種隔離級别​​

​​3.1讀未送出read-uncommitted​​

​​3.2不可重複讀​​

​​3.3可重複讀​​

​​3.4串行化​​

介紹

這裡介紹下 從事務 到 并發可能出現情況,到資料庫事務隔離級别,以及隔離級别對應的情況。

1.事務四種特性

1.1原子

事務開始幹活,要麼全做完,要麼全部沒做完,直接復原,不可能停留在中間情況。事務發生任何問題,都直接復原到執行前狀态。

mysql 資料庫 事務 四種隔離級别(讀未送出、不可重複讀、可重複讀、串行化) 和并發出現的情況(髒讀、不可重複讀、幻讀)事務的四種特性(原子、一緻、隔離、持久)

1.2一緻性 

事務開始前和執行後,資料庫的完整限制性不會被改變,不會發生改變,像銀行a向b賺錢,a扣了錢,b就必須增長錢

1.3隔離性

事務之間進行隔離,同一條資料一個事務操作其他事務不能操作,不會出現事務a做事,事務b也操作同一份資料情況。像a從銀行取錢,b這個時候不能向a存錢,隻有a完成後b才可以,完全隔離開

mysql 資料庫 事務 四種隔離級别(讀未送出、不可重複讀、可重複讀、串行化) 和并發出現的情況(髒讀、不可重複讀、幻讀)事務的四種特性(原子、一緻、隔離、持久)

1.4持久性

事務完成後,所有更新的結果都會儲存到資料庫,并且不會發生復原情況。

mysql 資料庫 事務 四種隔離級别(讀未送出、不可重複讀、可重複讀、串行化) 和并發出現的情況(髒讀、不可重複讀、幻讀)事務的四種特性(原子、一緻、隔離、持久)

2.并發可能會出現的情況

2.1髒讀

  • 示例:事務a讀取到事務b修改了的資料,這時事務b復原了資料,事務a讀到的就是髒資料。
mysql 資料庫 事務 四種隔離級别(讀未送出、不可重複讀、可重複讀、串行化) 和并發出現的情況(髒讀、不可重複讀、幻讀)事務的四種特性(原子、一緻、隔離、持久)

2.2不可重複讀

  • 示例: 事務a多次讀取同一資料,當中事務b更新并送出,事務a發現多次讀到的不一樣,就是不可重複讀。
  • 重點:事務b在事務a的多次讀取中,做了修改

2.3幻讀

  • 示例:事務a批量修改一批條件中資料,字段phone=aa ,這時 事務b新增一條資料 也滿足事務a修改資料的條件,最後事務a一看結果,我靠咋沒全改過來呢,哈哈,很逗啊,出現幻覺了,就是幻讀。
  • 重點:事務a修改一批資料,事務b做了新增。

總結重點

  • 不可重複讀出現在,修改情況下。
  • 幻讀出現在新增情況下。

3.事務的四種隔離級别

3.1讀未送出read-uncommitted

會涉及到:髒讀、不可重複讀、幻讀  的情況

3.2不可重複讀

會設計到:不可重複讀、幻讀 的情況

3.3可重複讀

會涉及到: 幻讀 的情況

3.4串行化

三類情況都不會涉及到

ok