mysql 事務隔離

髒讀

事務A更新了數據但是並未提交,事務B查詢到事務A更新的數據,事務A此時執行回滾操作,事務B讀到的數據是髒數據。

不可重複讀

事務A多次讀取同一數據。事務B在事務A多次讀取的過程中,對數據作了更新並提交,導致事務A多次讀取同一數據時,結果不一樣。

幻讀

事務A多次讀取一組數據。事務B在事務A多次讀取的過程中,對數據作了插入或刪除,然後提交。導致事務A多次讀取的一組數據時,結果並不相同,好像出現了幻覺。

mysql的四種事務隔離:

  1. 讀未提交 (read-uncommitted)
  2. 讀已提交 (read-committed):解決了髒讀
  3. 可重複讀 (repeatable-read):解決不可重複讀。事務A多次讀取同一數據,即使其他事務在此期間對數據更新並提交,事務A依然會讀取之前的數據
  4. 串行化 (serializable):解決了幻讀。事務隔離級別爲串行化時,讀寫數據都會鎖住整張表,影響性能。
  • 注意:mysql默認的隔離級別是repeatable-read,可更改爲read-committed

在/etc/mysql/mysql.con.d/mysqld.cnf文件中配置

transaction-isolation=READ-COMMITTED

重啓mysql服務

sudo service mysql restart

查看mysql事務隔離級別

查看當前會話隔離級別

select @@tx_isolation;

查看當前數據庫隔離級別

select @@global.tx_isolation;

事務隔離級別

發佈了322 篇原創文章 · 獲贊 163 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章