髒讀
當乙個事務正在多次修改某個資料,而在這個事務中這多次的修改都還未提交,這時乙個併發的事務來訪問該資料,就會造成兩個事務得到的資料不一致。如:使用者a向使用者b轉賬100元,對應sql命令如下不可重複讀update account set money=money+100 where name=』b』; (此時a通知b) update account set money=money-100 where name=』a』;
當只執行第一條sql時,a通知b檢視賬戶,b發現確實錢已到賬(此時即發生了髒讀),而之後無論第二條sql是否執行,只要該事務不提交,則所有操作都將回滾,那麼當b以後再次檢視賬戶時就會發現錢其實並沒有轉。
不可重複讀和髒讀的區別是,髒讀是某一事務讀取了另乙個事務未提交的髒資料,而不可重複讀則是讀取了前一事務提交的資料。幻讀
幻讀和不可重複讀都是讀取了另一條已經提交的事務(這點就髒讀不同),所不同的是不可重複讀查詢的都是同乙個資料項,而幻讀針對的是一批資料整體(比如資料的個數)。總結:不可重複讀的和幻讀很容易混淆,不可重複讀側重於修改,幻讀側重於新增或刪除。解決不可重複讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表。
事務隔離級別髒讀不可重複讀幻讀讀未提交(read-uncommitted)是是是讀提交(read-committed)否是是可重複讀(repeatable-read)否否是序列化(serializable)否否否
在mysql資料庫中,支援上面四種隔離級別,預設的為repeatable read (可重複讀)
mysql隔離級別 MySQL 事務隔離級別
mysql innodb所提供的事務滿足acid的要求,事務是通過事務日誌中的redo log和undo log來實現原子性 undo log 一致性 undo log 永續性 redo log 事務通過鎖機制實現隔離性。1 事務隔離級別與實現read uncommitted 讀未提交 read c...
mysql隔離級別驗證 mysql 隔離級別測試
1 設定隔離級別,包括 全域性 global.tx isolation,會話級別 session.tx isolation mysql workbench的會話 2 建立測試表 注意 unsigned auto increment primary key用法 預設引擎的設定 建立測試表 use te...
Mysql隔離級別
先記錄下幾個概念 髒讀 在當前事務中,讀取到其他事務中還未提交的資料 不可重複讀 在當前事務中,讀取某一行的資料,可能讀出的資料不同 幻讀 在當前事務中,讀取記錄時,另外的事務插入了新的記錄,當前事務可能出現新的行。四種隔離級別 1.未提交讀 可能讀到髒資料 會話a中的隔離級別為未提交讀 表中原來的...