一、事務的隔離級別要解決的問題: 1)臟讀:讀到了其它事務未提交的數據即臟讀,未提交意味著數據有可能會被回滾,也就是最終有可能不會存儲到數據庫中,即讀到了最終不一定存在存在的數據,即為臟讀 2)可重復讀:在一個事務內,最開始讀到的數據和事務結束前任意時刻讀到的同一批數據都是一致的。通常針對數據的Update操作。 3)幻讀:事務A對某些行的內容做了更改,但還未提交。此時事務B插入了與事務A更改前的記錄相同的記錄行,并且在事務A提交之前先提交了。此時,事務A的查詢,會發現剛剛的更改不起作用,但其實是剛剛事務B插進來的。讓用戶很魔幻,像出現了幻覺一樣,這就是幻讀
二、SQL 標準定義了四種隔離級別,MySQL 全都支持。這四種隔離級別分別是:1. 讀未提交(READ UNCOMMITTED)2. 讀提交 (READ COMMITTED)3. 可重復讀 (REPEATABLE READ)(mysql 默認)4. 串行化 (SERIALIZABLE)
從上往下,隔離強度逐漸增強,性能逐漸變差。采用哪種隔離級別要根據系統需求權衡決定,其中,可重復讀是 MySQL(INNODB) 的默認級別