MySQL 併發資料訪問以及事務隔離級別

2021-06-14 19:59:36 字數 653 閱讀 5065

併發資料訪問經常導致的問題有髒讀、不可重複讀、幻讀。

髒讀:是指乙個事務正在訪問資料,做了修改,但尚未提交,這時,另乙個事務也訪問並使用了這個資料。

不可重複讀:是指在乙個事務內,多次讀同一資料,但期間由於資料被另外的事務所修改,導致讀取結果不一致。

幻讀: 是指乙個事務對乙個表中的所有資料進行了修改。同時,另外乙個事務新增了表中資料,那麼就產生了第一次操作未完全成功的幻覺。

前面兩種問題發生於資料更改時,幻讀發生於資料增刪時。

對於上述的併發資料訪問問題,資料庫有事務隔離級別來分別處理。

read_uncommitted 會出現髒讀、不可重複讀、幻讀 ( 隔離級別最低,併發效能高 )

read_committed 會出現不可重複讀、幻讀(鎖定正在讀取的行)

repeatable_read 會出現幻讀(鎖定所讀取的所有行)

serializable 無併發問題(鎖表)

default 資料庫預設隔離級別

mysql innodb預設事務隔離級別是repeatable_read, myisam不支援事務。

by iefreer

資料庫的事務 事務併發以及隔離級別

事務的定義 事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。通過事務,sql server能將邏輯相關的一組操作繫結在一起,以便伺服器保持資料的完整性。事務通常是以begin transaction開始,以commi...

mysql 併發性 MySQL 事務

事務 transaction 是資料庫併發控制的不可分割的基本單位,可以將一系列的資料庫操作集合到乙個事務中,從總體上來講這個事務可能會對資料庫進行一些變動。事務存在的意義在於多個同時事務執行完成以後不管成功與否都要保持資料的乾淨 有序,也就是資料的一致性。比如我們在 12306 上購買火車票,如果...

mysql 多事務 MySQL多事務併發控制

mysql的預設隔離級別是可重複讀。若兩個事務a和b操作同一資源,a和b都通過begin開啟事務後,若a只存在讀操作,則b可以對資料進行寫操作,且b的寫操作不會影響a的讀,即a每次讀到的內容都是一致的 就算b已經提交 若a進行了寫操作,則b的讀操作不受影響,但b的寫操作會被阻塞,直到a提交了事務或者...